使用调试符号和cmake

时间:2016-09-08 22:21:31

标签: cmake cmake-gui libharu

当我想获得调试或发布项目构建时,建议将<{Here作为参数传递给cmake。我试图用cmake编译libharu,我想用调试符号编译它。我已搜索libharu中包含的CMakeLists.txt以获取以下字符串:

CMAKE_BUILD_TYPE

但我一无所获。我的问题是,如果在libharu的CMakeLists.txt没有提到它时指定CMAKE_BUILD_TYPE CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG 是否有意义?如果没有,我如何用调试符号编译libharu

PS:我注意到使用cmake为Visual Studio 2013生成的项目设置了Debug / Win32,这是否足够?在CMakeLists.txt中指定了此信息?

PPS:我想这个问题在很大程度上取决于特定的项目,但是有一些方法可以做到这一点吗?我的意思是,CMAKE_BUILD_TYPE总是创建Debug构建还是还有其他我应该注意的东西?

由于

1 个答案:

答案 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_TYPECMAKE_<LANG>_FLAGS_<CONFIG>,则会遵循有关配置类型的常见约定

{strong>并不意味着 CMakeLists.txt 不应该与这些变量一起发挥

通常CMakeLists.txtCMAKE_BUILD_TYPE设置为某个默认值,前提是该变量未由用户设置且使用单配置生成器。如果编译器的默认设置不适合项目,CMakeLists.txt也可以设置一些变量CMAKE_<LANG>_FLAGS_<CONFIG>

但即使CMakeLists.txt没有触及这些变量,它们也能正常工作。