This question already has answers here:
Passing compiler options cmake

(5个答案)


2年前关闭。




我想知道是否可以在调用cmake时追加到推断的变量。由于CMakeLists.txt不能检测到编译器或应用程序提供的cmake C++ 11支持,即使它受支持且应用程序需要它也是如此。如果我做:
cmake-DCMAKE_CXX_FLAGS='-std=c++11' ../source_dir

这些标志将被覆盖,我不想丢失推断的标志。我可以不覆盖而手动运行,只需复制标志并附加c++ 11,但我认为必须有更好的解决方案。

我发现了很多关于在CMakeLists.txt中添加c++ 11支持的文章,但在cmake调用中却没有,所以我想知道是否有可能。请告诉我。

最佳答案

您可能正在寻找

set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD_REQUIRED ON)

或通过命令行:
cmake -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=ON

就是说,CMAKE_CXX_FLAGS不会被cmake覆盖,因此您的CMakeLists.txt必须在某处执行。
在脚本中设置标记的一种礼貌方式是将变量追加到变量上,即:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} stuff")

关于c++ - 在cmake调用中附加CXX_FLAGS ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48462133/

10-11 15:29