Cmake 复制文件并将其包含在CPack归档中
因此,在Cmake 复制文件并将其包含在CPack归档中,cmake,cpack,Cmake,Cpack,因此,在CMake运行时(file(copy…,configure_file(…)和add_custom_command()all work*),有许多方法可以复制文件(和目录),但我还没有发现如何使从源代码复制到构建目录的文件或目录出现在由CPack生成的存档中。我认为这会解决问题,因为它实际上将复制链接到一个目标,然后将有一个安装链接到它: install(TARGET mytarget DESTINATION bin) 然而,我确实认识到,file()和configure\u file(
CMake
运行时(file(copy…
,configure_file(…)
和add_custom_command()
all work*),有许多方法可以复制文件(和目录),但我还没有发现如何使从源代码复制到构建目录的文件或目录出现在由CPack生成的存档中。我认为这会解决问题,因为它实际上将复制链接到一个目标,然后将有一个安装链接到它:
install(TARGET mytarget DESTINATION bin)
然而,我确实认识到,file()
和configure\u file()
命令没有明显的方式添加到目标。但是,这不起作用。那么,给定一个简单的CMakeLists.txt,例如下面的一个,我如何使所有文件(包括exmaple
目录)显示在归档文件中
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
enable_language(FORTRAN)
add_executable(mytarget ${PROJECT_SOURCE_DIR}/myprog.for)
install(TARGETS mytarget DESTINATION bin)
add_custom_command(TARGET mytarget PREBUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/examplefiles ${PROJECT_BINARY_DIR}/examplefiles)
set(CPACK_GENERATOR "TGZ")
include(CPack)
*我还没有发现这三种方法中哪一种是(最?)正确的-因此,对此的任何建议也将非常感谢,正如CPack模块的说明,CPack创建的二进制安装程序包含通过CMake的INSTALL
命令安装的所有内容。因此,示例中的可执行文件mytarget
将包含在CPack归档中,因为您使用install
命令将其复制到bin
文件夹中
要使CPack在生成的存档中包含示例
文件夹,您可以通过以下方式使用的目录
变体:
install(DIRECTORY "${PROJECT_SOURCE_DIR}/examplefiles/" DESTINATION "example")
文件(复制…
和配置文件(…)
对CPack安装的内容没有影响。这两个命令通常用于在配置CMake项目时将文件从源树复制到二叉树
使用add_custom_命令
和${CMAKE_命令}-E copy_目录…
将文件的实际复制推迟到项目的生成时间。但是,它也不会触发将复制的文件包含在CPack归档中。这对于源程序包而不是二进制发行版如何工作?CPack源程序包生成器的可配置性似乎相当有限。