我正尝试使用以下命令将一个文件${PROJECT_SOURCE_DIR}/abc.h
复制到另一个位置{PROJECT_SOURCE_DIR}/src
:
add_custom_command(
TARGET MyTarget
POST_BUILD
COMMAND -E copy ${PROJECT_SOURCE_DIR}/abc.h
$<"${PROJECT_SOURCE_DIR}/src":MyTarget>)
但是,无论我如何尝试,似乎创建的VC Studio项目都不会执行文件复制。有任何想法吗?谢谢。
答案 0 :(得分:3)
有几个问题。
首先,您要在自定义命令中执行cmake -E copy ...
。为此,您可以通过变量CMAKE_COMMAND
提供CMake可执行文件的路径。
接下来,在这种情况下,您不需要生成器表达式。您只需从"${PROJECT_SOURCE_DIR}/abc.h"
复制到"${PROJECT_SOURCE_DIR}/src"
所以,你的最终命令应该更像:
add_custom_command(
TARGET MyTarget
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/abc.h"
"${PROJECT_SOURCE_DIR}/src")
顺便说一句,如果复制的文件构成了构建的一部分,那么最好使用cmake -E copy_if_different ...
而不仅仅是copy
,因为这不会不必要地更新复制文件的时间戳。 (如果文件被视为“已更新”,则在重建发生时#include
将重新编译它的所有源。)