为什么dll文件在使用cmake复制时会被打开?

时间:2016-05-05 05:34:58

标签: cmake

我有一个cmake我正在将dll从一个位置复制到另一个位置,如下所示:

set(dllpath "C:/images/own/standard/abc.dll")
STRING(REGEX REPLACE "/" "\\\\" copyDll \"${dllpath }\")
STRING(REGEX REPLACE "/" "\\\\" copyDest \"${CMAKE_BINARY_DIR}/_runtime/bin_${CMAKE_BUILD_TYPE}\")
add_custom_command(TARGET my_test POST_BUILD COMMAND copyDll  ${copyDest})

然后它显示错误:

"C:\images\own\standard\abc.dll\" is not recognized as internal or external command.

如果我以下列方式复制dll,则打开dll文件,不要复制dll:

STRING(REGEX REPLACE "/" "\\\\" copyDest \"${CMAKE_BINARY_DIR}/_runtime/bin_${CMAKE_BUILD_TYPE}\")
add_custom_command(TARGET my_test POST_BUILD COMMAND "C:\images\own\standard\abc.dll"${copyDest})

为什么dll文件被打开但没有被复制?

1 个答案:

答案 0 :(得分:1)

尝试file(COPY ...)复制文件。在配置之后使用这样的命令是坏样式。

如果您坚持使用add_custom_command,请同时使用cmake -E copy。文档:https://cmake.org/cmake/help/v3.5/manual/cmake.1.html