CMAKE_BUILD_TYPE
但我一无所获。我的问题是,如果在libharu的CMakeLists.txt没有提到它时指定CMAKE_BUILD_TYPE
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_DEBUG
是否有意义?如果没有,我如何用调试符号编译libharu?
PPS:我想这个问题在很大程度上取决于特定的项目,但是有一些方法可以做到这一点吗?我的意思是,CMAKE_BUILD_TYPE
总是创建Debug构建还是还有其他我应该注意的东西?
由于
答案 0 :(得分:2)
通过CMAKE_BUILD_TYPE
设置配置类型将编译器的附加选项集切换为一个,其中通常反映配置的含义。也就是说,传递
-DCMAKE_BUILD_TYPE=Debug
到cmake
告诉编译器生成调试信息,除非CMakeLists.txt修改了该行为。
依赖于配置的编译器选项包含在变量CMAKE_<LANG>_FLAGS_<CONFIG>
中。例如,变量CMAKE_C_FLAGS_DEBUG
在&#34; Debug&#34;中包含C编译器的附加选项。组态。这些变量由CMake自动填充,CMakeLists.txt
本身很少修改它们。
因此,如果您发现CMakeLists.txt
没有使用变量CMAKE_BUILD_TYPE
和CMAKE_<LANG>_FLAGS_<CONFIG>
,则会遵循有关配置类型的常见约定。
{strong>并不意味着 CMakeLists.txt
不应该与这些变量一起发挥。
通常CMakeLists.txt
将CMAKE_BUILD_TYPE
设置为某个默认值,前提是该变量未由用户设置且使用单配置生成器。如果编译器的默认设置不适合项目,CMakeLists.txt
也可以设置一些变量CMAKE_<LANG>_FLAGS_<CONFIG>
。
但即使CMakeLists.txt
没有触及这些变量,它们也能正常工作。