如何在可执行文件名中获取调试后缀

时间:2015-03-06 06:31:58

标签: cmake

我正在使用cmake 2.8.12.2。我已设置CMAKE_DEBUG_POSTFIX,它会自动与add_library命令一起使用。但它不会自动与add_executable命令一起使用。我发现我可以设置DEBUG_POSTFIX目标属性以将调试后缀添加到可执行文件名中,但这需要使用附加命令。

add_executable(${PROJECT_NAME} ${SOURCE_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})

第二个命令是否明确设置了所需的DEBUG_POSTFIX目标属性,还是有更简单的方法?

2 个答案:

答案 0 :(得分:11)

set_target_properties州的当前cmake文档

  

还有一个<CONFIG>_OUTPUT_NAME可以在每个配置的基础上设置输出名称。 <CONFIG>_POSTFIX在命名方式(在大写字母中,例如“DEBUG_POSTFIX”)构建时,为目标的真实名称设置后缀。当目标创建为变量CMAKE_<CONFIG>_POSTFIX的值时,将初始化此属性的值(可执行目标除外,因为早期的CMake版本没有将此变量用于可执行文件)。

因此,似乎突出了cmake在可执行文件名称中不使用CMAKE_DEBUG_POSTFIX的值这一事实。因此

add_executable(myexe ${SOURCE_FILES})
set_target_properties(myexe PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
在构建${CMAKE_DEBUG_POSTFIX}配置的myexe目标时,

将使用全局变量DEBUG的值。

请注意,此问题的一位评论者对变量${PROJECT_NAME}的使用感到困惑。使用myexe时,此变量自动设置为project(myexe)。使用${PROJECT_NAME}相当于myexe,可以更轻松地复制/粘贴到新的CMakeLists.txt。

答案 1 :(得分:0)

请注意,如果您的项目中有许多子可执行文件,那么值得查看CMAKE_EXECUTABLE_SUFFIX。在针对特定构建(发布/调试)运行CMake时,需要更改此情况下的变量,但此后缀会自动附加到每个ADD_EXECUTABLE(...) - 调用可执行文件名称。使用CMake 2.8.12.2和3.0.2进行测试和验证