如何使用目标';在CMake中的add_custom_命令中的路径?

如何使用目标';在CMake中的add_custom_命令中的路径?,cmake,Cmake,在CMakeLists.txt中有一个名为“library.dll”的库。我想添加一个生成后事件,将生成的文件复制到另一个目录。文档中说要使用生成器事件,但它不起作用: add_custom_command(TARGET library.dll POST_BUILD COMMAND copy $<TARGET_FILE:library.dll> \"${SOME_DIR}/bin\") add\u custom\u命令(TARGET library.dll POST\u BUILD

在CMakeLists.txt中有一个名为“library.dll”的库。我想添加一个生成后事件,将生成的文件复制到另一个目录。文档中说要使用生成器事件,但它不起作用:

add_custom_command(TARGET library.dll POST_BUILD COMMAND copy $<TARGET_FILE:library.dll> \"${SOME_DIR}/bin\")
add\u custom\u命令(TARGET library.dll POST\u BUILD command copy$\“${SOME\u DIR}/bin\”)

我正在使用CMake 2.8.3在Windows 7上生成VC++2010项目文件。

尝试以下更改:

添加VERBATIM选项,确保命令的所有参数都将正确转义

不要使用Windows内置的复制命令,而是在命令模式下调用CMake,该模式内置了独立于平台的复制命令

修改后的命令如下所示:

add_custom_command(TARGET library.dll POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:library.dll> ${SOME_DIR}/bin VERBATIM)
add_custom_命令(TARGET library.dll POST_BUILD command${CMAKE_command}-E copy$${SOME_DIR}/bin逐字记录)

这很有效,谢谢!唯一的问题是目标名称中不能有“.”,该名称在2.8.4中已修复:。该错误是在CMake 2.8.4中报告的--它是在2天前刚刚报告并修复的。在下一版本的CMake之前,该修复程序不会出现。原始问题($CMake 2.8.5)中使用的“生成器表达式”功能已经发布,因此这不再是一个问题。