安装一些构建工件后:
install(TARGETS linktest
DESTINATION .
COMPONENT linkTest)
我想在这些工件上使用install(CODE)
进行一些后处理,如下所示:
install(CODE "
execute_process(COMMAND sh -c \"
echo Do stuff in `pwd`
exit 0
\")
" COMPONENT linkTest)
install(CODE)
的默认工作目录似乎是与源的当前CMakeLists.txt
目录对应的构建目录,例如当我以详细模式运行cpack
时:
CPack Verbose: Installing: /Users/jake/devel/linktest.build/_CPack_Packages/Darwin/ZIP/LinkTest-0.1.1-Darwin/./liblinktest.dylib
Do stuff in /Users/jake/devel/linktest.build
如何找到要传递给WORKING_DIRECTORY
的正确目录,以便脚本从DESTINATION .
命令中的install(TARGETS)
指定的目录运行?
答案 0 :(得分:0)
使用CMAKE_INSTALL_PREFIX延迟扩展工作:
install(CODE "
execute_process(COMMAND sh -c \"
echo Do stuff in `pwd`
exit 0
\"
WORKING_DIRECTORY \${CMAKE_INSTALL_PREFIX})
" COMPONENT linkTest)
我们必须使用\${CMAKE_INSTALL_PREFIX}
而不是${CMAKE_INSTALL_PREFIX}
,因此在CPack运行时而不是在配置生成时进行评估,请参阅例如this answer
新输出:
CPack Verbose: Installing: /Users/jake/devel/linktest.build/_CPack_Packages/Darwin/ZIP/LinkTest-0.1.1-Darwin/./liblinktest.dylib
Do stuff in /Users/jake/devel/linktest.build/_CPack_Packages/Darwin/ZIP/LinkTest-0.1.1-Darwin