我正在开发post build,INSTALL命令。在构建项目之后,我构建了INSTALL项目,该项目将目录复制到用户指定的位置。我使用
工作正常安装(TARGETS EXECTUABLE RUNTIME DESTINATION CMAKE_INSTALL_PREFIX / USERSPECIFIEDLOCATION )。
我想将此更改为
安装(TARGETS EXECTUABLE RUNTIME DESTINATION CMAKE_INSTALL_PREFIX / DEBUG或RELEASE )。
因此,如果我在VS2012中使用debug构建,它应该将可执行文件复制到CMAKE_INSTALL_PREFIX / DEBUG 而不是CMAKE_INSTALL_PREFIX / USERSPECIFIEDLOCATION 。
提前致谢。
答案 0 :(得分:5)
如果您仔细观察documentation:
,您会找到问题的答案The CONFIGURATIONS argument specifies a list of build configurations
for which the install rule applies (Debug, Release, etc.).
示例:
add_executable(boo boo.cpp)
install(
TARGETS
boo
CONFIGURATIONS
Debug
DESTINATION
bin/Debug
)
install(
TARGETS
boo
CONFIGURATIONS
Release
DESTINATION
bin/Release
)
但我认为你所需要的只是CONFIG_POSTFIX目标属性:
add_executable(bar bar.cpp)
add_library(baz baz.cpp)
set_target_properties(bar baz PROPERTIES DEBUG_POSTFIX d)
install(TARGETS bar DESTINATION bin)
install(TARGETS baz DESTINATION lib)
使用install
配置生成Release
目标产生:bar.exe
和baz.lib
。
使用install
配置生成Debug
目标会产生:bard.exe
和bazd.lib
。
请注意,对于库,您可以使用CMAKE_DEBUG_POSTFIX(我不知道为什么,但CMAKE_DEBUG_POSTFIX
不适用于可执行文件):
set(CMAKE_DEBUG_POSTFIX d)
add_library(baz baz.cpp)
install(TARGETS baz DESTINATION lib)
target_link_libraries。请参阅debug
和optimized
。