创建复制文件/目录但不包括某些项目的CMake目标

问题描述 投票:0回答:1

我正在尝试使用add_custom_target为C ++项目生成CMake目标,该目标将CMakeLists.txt所在目录的内容复制到${CMAKE_BINARY_DIR}中,但排除给定的文件列表。] >

虽然看起来很容易,但是我在这里遇到了问题。到目前为止,我的尝试:

1)生成所有文件/目录的列表,删除要排除的项目,然后使用CMake复制命令:

file(GLOB files_to_copy LIST_DIRECTORIES TRUE *)
list(REMOVE_ITEM files_to_copy
  ${CMAKE_CURRENT_SOURCE_DIR}/file_to_exclude.txt
  ${CMAKE_CURRENT_SOURCE_DIR}/dir_to_exclude
  # ...
)
add_custom_target(my-target
  COMMAND ${CMAKE_COMMAND} -E copy ${files_to_copy} ${CMAKE_BINARY_DIR}
)

问题:

  • 以这种方式删除项目在字符串比较级别上起作用,例如,在使用符号链接时可能会导致问题
  • copy command line tool显然支持复制目录,但是它似乎在我的机器上不起作用,因此目录
  • 被复制。

    2)使用file命令复制文件,但不包括某些文件

copy

问题:

  • 这正是我想要的,只是命令没有绑定到目标,因此总是执行。但是我只需要将复制操作作为目标即可。
  • 是否有可能将file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/" DESTINATION ${CMAKE_BINARY_DIR} PATTERN "file_to_exclude.txt" EXCLUDE PATTERN "dir_to_exclude" EXCLUDE ) 命令绑定到目标?或任何其他简单的解决方案来实现我想要的?

请注意,我只想使用CMake内置工具,而不执行任何特定于操作系统的Shell命令(在跨平台项目上工作。)>

我正在尝试使用add_custom_target为C ++项目生成CMake目标,该目标会将CMakeLists.txt所在目录的内容复制到$ {CMAKE_BINARY_DIR},但不包括...

c++ cmake copy target
1个回答
0
投票

CMake file(COPY ...)仅在CMake上下文

中工作,并且立即
© www.soinside.com 2019 - 2024. All rights reserved.