我正试图在我的#34; make install"
结尾处制作我的可执行文件的副本我需要做类似的事情:
cp bin/prog bin/prog1
我已将以下内容添加为我的CMakelists.txt中的最后一行
install (CODE "execute_process(COMMAND /src/copyExe.sh ${BIN_DIR})")
copyExe.sh是一个执行复制的bash脚本。为了获得理想的效果,我需要运行" make install"两次。它第一次抱怨prog不存在,然后将文件复制到bin。第二次找到编程并能够复制。
有没有办法确保我的copyExe脚本在文件被复制到bin后运行?
目录结构
site
bin
src
CMakeLists.txt ( contains add_dir(foo) and install(CODE....))
foo
CMakeLists.txt ( contains install( TARGET..... ))
答案 0 :(得分:1)
install
命令的CMake documentation表示(关于安装逻辑):
未定义跨目录的顺序。
看起来它倾向于以与add_subdirectory()
调用相同的顺序处理不同子目录中的安装逻辑。
但是,它处理当前目录 中install()
调用的安装逻辑,然后再处理子目录中的安装逻辑。
您可以将install(CODE)
移到某个子目录(例如fix_binaries
),然后在CMakeLists.txt
的{{1}}末尾添加此子目录:
<强>的src / fix_binaries /的CMakeLists.txt 强>:
src
<强>的src /的CMakeLists.txt 强>:
install(CODE ...)
此方法适用于我参与的项目之一(related code)。