通过执行生成的INSTALL
项目,我具有要安装的各种文件的列表。这可以工作,但是在执行安装操作时,有时文件不再可用。环境是构建服务器,文件在其中移动->这会导致构建错误。
解决此问题的一种简便方法是在install命令的OPTIONAL
参数中。所以我的问题是:如果安装命令失败,是否可以在运行时输出警告?
这是我的代码,以重新创建问题。在src
目录中有文件“ 1.txt”和“ 2.txt”。我建立cmakelists.txt,然后删除“ 2.txt”。之后,执行我得到的INSTALL
解决方案。
cmake_minimum_required(VERSION 3.0)
project(documentation)
set(SOURCEDOCUMENTATION "D:/projects/side_master/src/documentation/src")
set(TARGETDOCUMENTATION "D:/projects/side_master/src/documentation/tgt")
file (GLOB files_to_install "${SOURCEDOCUMENTATION}/*")
foreach(file_to_install ${files_to_install})
install(FILES ${file_to_install} DESTINATION ${TARGETDOCUMENTATION} OPTIONAL)
endforeach()
错误(没有OPTIONAL
参数):
-- Install configuration: "Debug"
-- Installing: D:/projects/side_master/src/documentation/tgt/1.txt
CMake Error at cmake_install.cmake:56 (file):
file INSTALL cannot find
"D:/projects/side_master/src/documentation/src/2.txt".
我想得到的是一条生成的消息,像这样:
File "D:/projects/side_master/src/documentation/src/2.txt" not found.
您可以使用CMake install(SCRIPT ...)
命令的install(CODE ...)
或install(CODE ...)
签名来运行特定于您的用例的自定义安装步骤。此处的自定义步骤将检查要安装的文件是否存在(使用CMake的install
逻辑),并在文件不存在时显示警告消息。定制安装命令可能如下所示:
EXISTS