Cmake 如何在可执行文件名中获取调试后缀
我正在使用cmake 2.8.12.2。我已经设置了Cmake 如何在可执行文件名中获取调试后缀,cmake,Cmake,我正在使用cmake 2.8.12.2。我已经设置了CMAKE\u DEBUG\u POSTFIX,它会自动与add\u library命令一起使用。但它不会自动与add_executable命令一起使用。我发现我可以设置DEBUG\u POSTFIXtarget属性,以便在可执行文件名中获得调试后缀,但这需要使用额外的命令 add_executable(${PROJECT_NAME} ${SOURCE_FILES}) set_target_properties(${PROJECT_NAME}
CMAKE\u DEBUG\u POSTFIX
,它会自动与add\u library
命令一起使用。但它不会自动与add_executable
命令一起使用。我发现我可以设置DEBUG\u POSTFIX
target属性,以便在可执行文件名中获得调试后缀,但这需要使用额外的命令
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
第二个命令是否需要显式设置
DEBUG\u POSTFIX
目标属性,还是有更简单的方法?当前的cmake状态文档
还有一个\u OUTPUT\u NAME
,可以根据每个配置设置输出名称\u POSTFIX
在名为的配置(大写,例如“DEBUG\u POSTFIX”)下构建目标时,为目标的真实名称设置一个后缀。当目标被创建为变量CMAKE\uuu POSTFIX
的值时,此属性的值将被初始化(可执行目标除外,因为早期的CMAKE版本未将此变量用于可执行文件)
因此,它似乎强调了一个事实,即cmake没有在可执行文件的名称中使用cmake\u DEBUG\u POSTFIX
的值。所以
add_executable(myexe ${SOURCE_FILES})
set_target_properties(myexe PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
在为DEBUG
配置构建myexe
目标时,将使用全局变量${CMAKE\u DEBUG\u POSTFIX}
的值
注意,这个问题的一位评论者对变量
${PROJECT_NAME}
的使用感到困惑。使用project(myexe)
时,此变量会自动设置为myexe
。使用${PROJECT_NAME}
相当于myexe
,这样可以更容易地复制/粘贴到新的CMakeLists.txt 只需提及,如果您的项目中有许多子可执行文件,那么值得一看。本例中的变量在为特定构建(发布/调试)运行CMake时需要更改,但此后缀自动附加到每个ADD_可执行文件(…)-调用可执行文件名。使用CMake 2.8.12.2和3.0.2进行测试和验证您的变量名让我感到困惑:PROJECT\u NAME
对于目标来说是个坏名字,CMake\u DEBUG\u POSTFIX
应该包含您要添加的后缀。为什么要使用变量?至少在您只使用一个字符串的情况下,将其作为字符串键入。不要使用以CMAKE_uu开头的变量名,因为它是为CMAKE自己的变量保留的。或者你错了,你认为这个变量是你需要传递的?然后:您必须传递要添加到调试目标的后缀。我为每个目标使用一个变量,并且我在许多项目上已经这样做了很长时间。