我正在使用CMake生成可视化工作室文件.我想将xyz.dll添加到abc.exe所在的同一文件夹中.
我曾经读过某个地方,当我手动将xyz.dll文件复制到同一个文件夹中时abc.exe,问题就解决了.但每次都不可能..我想编写CMake命令,以便找到该xyz.dll文件并复制到所在的文件夹中abc.exe.
下面提到的是.exe和.dll文件驻留在我的PC 中的路径.
${MyWorkSpace_ROOT_DIR}/algoCommon/pthread/dll/xyz.dll
${MyWorkSpace_ROOT_DIR}/xml/addAlgo/.../cmakeOut.VS12/Debug/abc.exe
Run Code Online (Sandbox Code Playgroud)
abc是我的项目,我想确认以下提到的是否错误.
add_custom_command(TARGET abc PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MyWorkSpace_ROOT_DIR}/algoCommon/pthread/dll"
$<{MyWorkSpace_ROOT_DIR}/xml/addAlgo/.../cmakeOut.VS12/Debug/:abc>)
Run Code Online (Sandbox Code Playgroud)
如果这是错误的,请帮助我.如果它是正确的,那么我想问一些疑问..这个命令会自动将xyz.dll文件复制到文件夹abc.exe中驻留还是其他地方正在发生?
小智 5
正如Tsyvarev已经评论过 - 目标表达式无效.此外,您的源代码行不完整(直到您要复制需要其他命令的整个文件夹)
正确的命令是
add_custom_command(TARGET abc POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MyWorkSpace_ROOT_DIR}/algoCommon/pthread/dll/xyz.dll"
$<TARGET_FILE_DIR:abc>)
Run Code Online (Sandbox Code Playgroud)
如果您通过cmake构建dll,并且您知道可以编写的目标名称
add_custom_command(TARGET abc POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:xyz>
$<TARGET_FILE_DIR:abc>)
Run Code Online (Sandbox Code Playgroud)
其中xyz是dll的目标名称
你可能也看看这个: 如何使用CMake将DLL文件复制到与可执行文件相同的文件夹中?
| 归档时间: |
|
| 查看次数: |
3402 次 |
| 最近记录: |