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

Phi*_*hil 8 cmake

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

add_executable(${PROJECT_NAME} ${SOURCE_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*hil 12

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})
Run Code Online (Sandbox Code Playgroud)

${CMAKE_DEBUG_POSTFIX}myexeDEBUG配置构建目标时将使用全局变量的值.

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