簡體   English   中英

如何在不更改 CMakeLists.txt 的情況下將 CFLAGS 和 CXXFLAGS 傳遞給 cmake(也許通過 CLI?)

[英]how can I pass CFLAGS and CXXFLAGS to cmake without altering the CMakeLists.txt (through CLI perhaps?)

我無法更改我正在處理的項目的 CMakeLists.txt,並且其中使用的 cmake 工具鏈文件僅聲明 C 和 CXX FLAGS 用於發布。

所以為了調試我需要強制我自己的標志(即 append -O0 -DDEBUG 到 CFLAGS 和 CXXFLAGS)。

所以我嘗試使用以下示例通過cli

主.cpp:

#include <iostream>

int main(int argc, char * argv[])
{
    std::cout << "hello world\n";
    return 0;
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.1)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

#prescon settings
project(cmakecflags)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CXX_EXTENSIONS NO)

enable_testing()

add_executable(cmakecflagsapp
    main.cpp
)

message(CFLAGS=${CFLAGS})
message(CXXFLAGS=${CXXFLAGS})

調用 cmake:

CFLAGS=' -O0 -DDEBUG ' CXXFLAGS=' -O0 -DDEBUG ' cmake -G 'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug .

預期結果使 2 個變量為空

-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CFLAGS=
CXXFLAGS=
-- Configuring done
-- Generating done

我想知道。

我嘗試使用 cmake “--trace” 來查看正在執行的操作,但我找不到 cmake 將從同名環境變量初始化其變量的相關部分。

我可以使用另一個變量嗎? 也許另一種方式?

您可以使用-DCMAKE_CXX_FLAGS="-O0 -DDEBUG"設置標志,如下所示:

cmake -DCMAKE_CXX_FLAGS=CFLAGS="-O0 -DDEBUG " -DCMAKE_C_FLAGS="-O0 -DDEBUG " -G 'Unix Makefiles' -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Debug .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM