我正在使用CMake创建和构建我的项目解决方案。我正在使用以下命令来添加构建后事件,以将.tlb从本地bin复制到程序bin。
ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME} POST_BUILD COMMAND xcopy /D /Y "${CMAKE_SOURCE_DIR}LocalBin\\example.tlb" "${CMAKE_SOURCE_DIR}ProgramBin\\$<CONFIGURATION>\\")
Run Code Online (Sandbox Code Playgroud)
将命令添加到项目属性后,该命令将添加为
xcopy / D / Y LocalBin \ example.tlb ProgramBin \ Debug \
但是,这给了我一个错误。退出代码4。
如果我进入项目属性并修改命令行,然后将其更改为添加“”
xcopy / D / Y“ LocalBin \ example.tlb”“ ProgramBin \ Debug \”
有用。
有没有一种方法可以更改CMake add custom命令以在实际命令行中包含“”,这样它就可以工作,并且无需手动更改项目属性。
您必须在字符串内转义引号。转义使用反斜杠在CMake中完成。因此,请在字符串中添加引号,然后添加\"。
引用CMake文档https://cmake.org/cmake/help/v3.4/manual/cmake-language.7.html#escape-sequences
甲
\随后的非字母数字字符简单地编码文字字符,而不将其解释为语法
在您的情况下,您最终会得到
"\"${CMAKE_SOURCE_DIR}LocalBin\\example.tlb\""
Run Code Online (Sandbox Code Playgroud)
代替
"${CMAKE_SOURCE_DIR}LocalBin\\example.tlb"
Run Code Online (Sandbox Code Playgroud)
经过一段时间的努力后,我找到了一个使用生成器表达式的可行解决方案:
ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME} POST_BUILD COMMAND xcopy /D /Y $<1:"${CMAKE_SOURCE_DIR}LocalBin\\example.tlb"> $<1:"${CMAKE_SOURCE_DIR}ProgramBin\\$<CONFIGURATION>\\">)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9767 次 |
| 最近记录: |