在CMake中,我想运行post build命令,该命令将可执行文件和必需的dll自动复制到用户指定的位置。使用CMake是否可行?
这取决于您要做什么。这是4种不同的解决方案。可能还有其他人要添加到此列表...
install()命令
如果要复制刚刚构建的可执行文件和dll,则可以使用该install()
命令,但该命令仅在用户运行时才起作用make install
。
设定变量
如果要在构建时直接进行操作,则可以使用CMake变量来配置构建。这些变量在http://www.cmake.org/Wiki/CMake_Useful_Variables中进行了描述
EXECUTABLE_OUTPUT_PATH
set this variable to specify a common place where CMake should put all executable files (instead of CMAKE_CURRENT_BINARY_DIR)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
LIBRARY_OUTPUT_PATH
set this variable to specify a common place where CMake should put all libraries (instead of CMAKE_CURRENT_BINARY_DIR)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
自定义命令
如果要复制其他未构建的可执行文件或dll(二进制库等),一个好的解决方案是使用自定义命令。在那种情况下,在所有操作系统上使用可移植的解决方案来复制文件可能非常棘手。这就是CMake直接(从其他)cmake
可执行文件提供此功能的原因:
在命令行中,您可以使用:
cmake -E copy_if_different <SOURCE> <DESTINATION>
别忘了您可以使用${CMAKE_COMMAND}
变量从CMakeLists文件中调用cmake可执行文件;)
configure_file()命令
最后,该configure_file()
命令允许您通过用目标文件中的变量值替换变量来从另一个文件中生成文件。如果源文件不包含变量,则目标文件仅是源的副本。但是我不知道它是否与二进制文件完美配合。您应该自己仔细测试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句