【问题标题】:Why dll file gets opened while copying it using cmake?为什么使用 cmake 复制 dll 文件时会打开它?
【发布时间】:2016-05-05 05:34:58
【问题描述】:

我有一个 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 文件被打开但没有被复制?

【问题讨论】:

  • 您错过了复制命令本身。 COMMAND 期望在主机系统命令 shell 上工作的东西。这是您关于将 DLL 作为构建后步骤复制的第三个连续问题,并且 - 对不起,我不得不说 - 您的代码示例的质量正在下降。最重要的是,如果您在last question 的答案中尝试代码,您能否将任何问题作为评论放在此处?你可以用一个问题解决所有这些问题。

标签: cmake


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多