如何在CMakeLists.txt

时间:2019-09-28 23:36:20

标签: c++ cmake

我在设置选项和CMake变量并使它们传播到CMake GUI时遇到麻烦。

例如,以下行在我的CMakeLists.txt文件中:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -tR -DPOCO_DLL")
message("CMake flags: " ${CMAKE_CXX_FLAGS}) 

在CMake GUI中运行configure时,它会打印“ CMake标志:-tM -tR -DPOCO_DLL” ,表明设置CMAKE_CXX_FLAGS“有效”。

但是GUI不会更新,仅在CMAKE_CXX_FLAGS行上显示“-tM”

在CMakeLists文件中设置这些CMAKE选项以使其传播到CMake GUI的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

技巧是将CMAKE_CXX_FLAGS设置在{em> {}之前。但是,这还不够。您还需要将其放入缓存。

此外,如果您计划支持最初从命令行界面和/或project(...) cmake选项(本地初始缓存)进行设置,则需要强制将其放入缓存,如下所示:< / p>

-C

另一方面,要非常小心,因为您在对编译器一无所知的同时正在设置命令行选项,这默认情况下是在执行set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -tR -DPOCO_DLL" CACHE STRING "Default CXX options" FORCE) ... ... project(MyProject) .... 语句期间确定的。

这将使您的project编译器具有依赖性。

最后,这是有关set cmake command的文档