我在设置选项和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的正确方法是什么?
答案 0 :(得分:1)
技巧是将CMAKE_CXX_FLAGS
设置在{em> {1>}之前。但是,这还不够。您还需要将其放入缓存。
此外,如果您计划支持最初从命令行界面和/或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的文档