使用调试符号和 cmake 编译项目的正确方法
Proper way to compile project with debug symbols and cmake
Here is recommended to pass CMAKE_BUILD_TYPE
as an argument to cmake when I want to obtain debug or release project builds. I'm trying to compile libharu with cmake and I would like to compile it with debug symbols. I've searched CMakeLists.txt included in libharu 用于以下字符串:
CMAKE_BUILD_TYPE
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_DEBUG
但我一无所获。我的问题是,当使用调试符号 libharu's CMakeLists.txt doesn't mention it? If not, how can I compile libharu 时指定 CMAKE_BUILD_TYPE
是否有意义?
PS:我注意到使用 cmake 为 Visual Studio 2013 生成的项目已设置 Debug/Win32,这是否足够?在 CMakeLists.txt 中的何处指定此信息?
PPS:我想这个问题在很大程度上取决于特定的项目,但是一般来说有什么办法可以做到这一点吗?我的意思是,CMAKE_BUILD_TYPE=Debug
是否总是创建调试版本,或者还有其他我应该注意的事情吗?
谢谢
通过 CMAKE_BUILD_TYPE
设置配置类型将编译器的一组附加选项切换为一个,通常 反映了配置的含义。即通过
-DCMAKE_BUILD_TYPE=Debug
到 cmake
告诉编译器生成调试信息 除非 CMakeLists.txt 修改该行为 .
依赖于配置的编译器选项包含在变量 CMAKE_<LANG>_FLAGS_<CONFIG>
中。例如,变量 CMAKE_C_FLAGS_DEBUG
在 "Debug" 配置中包含 C 编译器的附加选项。这些变量由 CMake 自动填充,CMakeLists.txt
本身很少修改它们。
因此,如果您发现 CMakeLists.txt
不使用变量 CMAKE_BUILD_TYPE
和 CMAKE_<LANG>_FLAGS_<CONFIG>
,那么 它遵循关于配置类型的通用约定.
这 并不意味着 CMakeLists.txt
不应该 使用该变量。
通常 CMakeLists.txt
将 CMAKE_BUILD_TYPE
设置为某个默认值,前提是该变量未由用户设置并且使用单配置生成器。 CMakeLists.txt
也可以设置一些变量 CMAKE_<LANG>_FLAGS_<CONFIG>
,如果编译器的默认设置不适合该项目。
但即使 CMakeLists.txt
不触及这些变量,它们也起作用。
Here is recommended to pass CMAKE_BUILD_TYPE
as an argument to cmake when I want to obtain debug or release project builds. I'm trying to compile libharu with cmake and I would like to compile it with debug symbols. I've searched CMakeLists.txt included in libharu 用于以下字符串:
CMAKE_BUILD_TYPE
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_DEBUG
但我一无所获。我的问题是,当使用调试符号 libharu's CMakeLists.txt doesn't mention it? If not, how can I compile libharu 时指定 CMAKE_BUILD_TYPE
是否有意义?
PS:我注意到使用 cmake 为 Visual Studio 2013 生成的项目已设置 Debug/Win32,这是否足够?在 CMakeLists.txt 中的何处指定此信息?
PPS:我想这个问题在很大程度上取决于特定的项目,但是一般来说有什么办法可以做到这一点吗?我的意思是,CMAKE_BUILD_TYPE=Debug
是否总是创建调试版本,或者还有其他我应该注意的事情吗?
谢谢
通过 CMAKE_BUILD_TYPE
设置配置类型将编译器的一组附加选项切换为一个,通常 反映了配置的含义。即通过
-DCMAKE_BUILD_TYPE=Debug
到 cmake
告诉编译器生成调试信息 除非 CMakeLists.txt 修改该行为 .
依赖于配置的编译器选项包含在变量 CMAKE_<LANG>_FLAGS_<CONFIG>
中。例如,变量 CMAKE_C_FLAGS_DEBUG
在 "Debug" 配置中包含 C 编译器的附加选项。这些变量由 CMake 自动填充,CMakeLists.txt
本身很少修改它们。
因此,如果您发现 CMakeLists.txt
不使用变量 CMAKE_BUILD_TYPE
和 CMAKE_<LANG>_FLAGS_<CONFIG>
,那么 它遵循关于配置类型的通用约定.
这 并不意味着 CMakeLists.txt
不应该 使用该变量。
通常 CMakeLists.txt
将 CMAKE_BUILD_TYPE
设置为某个默认值,前提是该变量未由用户设置并且使用单配置生成器。 CMakeLists.txt
也可以设置一些变量 CMAKE_<LANG>_FLAGS_<CONFIG>
,如果编译器的默认设置不适合该项目。
但即使 CMakeLists.txt
不触及这些变量,它们也起作用。