【问题标题】:how can I pass CFLAGS and CXXFLAGS to cmake without altering the CMakeLists.txt (through CLI perhaps?)如何在不更改 CMakeLists.txt 的情况下将 CFLAGS 和 CXXFLAGS 传递给 cmake(也许通过 CLI?)
【发布时间】:2019-11-01 12:43:41
【问题描述】:

我无法更改我正在处理的项目的 CMakeLists.txt,并且其中使用的 cmake 工具链文件仅声明 C 和 CXX FLAGS 用于发布。

所以为了调试,我需要强制使用我自己的标志(即将 -O0 -DDEBUG 附加到 CFLAGS 和 CXXFLAGS)。

所以我尝试通过 cli 使用以下示例

main.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 将从同名 env 变量初始化其变量的相关部分。

我可以使用另一个变量吗?也许是另一种方式?

【问题讨论】:

标签: c++ cmake command-line-interface cflags


【解决方案1】:

您可以使用-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 .

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 2022-12-24
    • 2018-02-28
    • 2019-01-07
    • 1970-01-01
    • 2019-02-11
    • 2016-08-08
    • 2016-03-07
    • 2015-11-02
    相关资源
    最近更新 更多