我试图通过使用ADD_CUSTOM_COMMAND向我的vc2010项目添加一些自定义构建命令.但:
[1]我发现CMAKE会自动插入比我预期更多的代码.
例如,我希望命令完全是:
"c:\Some Folder\MyTool.exe" -arg0 -arg1
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt中的相应代码如下:
add_custom_command( OUTPUT ${outfile}
COMMAND "c:\Some Folder\MyTool.exe" ARGS "-arg0 -arg1"
# COMMAND "\"c:\Some Folder\MyTool.exe\"" will FAIL to be parsed!
MAIN_DEPENDENCY ${infile}
VERBATIM)
Run Code Online (Sandbox Code Playgroud)
但实际上我得到了:
setlocal
c:\Some Folder\MyTool.exe "-arg0 -arg1"
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
Run Code Online (Sandbox Code Playgroud)
这不是我想要的.我也尝试过字符串:COMMAND "\"${MYTOOL_PATH}\" -arg0 -arg1"但是CMake只是无法解析它,因为字符串前面有一个引号.所以很糟糕我不能引用命令字符串,因为路径c:\Some Folder\MyTool.exe包含空格.
[2]我还注意到CMake会自动扩展我的依赖性修补程序.
如果我添加到命令DEPENS "$(PATH_MACRO)",我将最终得到通过CMake的自动扩展的依赖路径:C:\MySolutionDir\$(PATH_MACRO); 但我只想要$(PATH_MACRO),因为我会确保视觉工作室理解$(PATH_MACRO) 所指的内容.
所以这是我的问题:
CMake如何只接受我的原始输入,而不自动扩展路径或插入我不期望的代码?我将确保我的输入对visual studio有效.谢谢!
PS.我的CMake版本:2.8.10.2.VS版:visual studio 2010 Ultimate
对于问题 1,请尝试"c:\\Some Folder\\MyTool.exe" -arg0 -arg1. 该ARGS参数不是必需的,但要点是省略-arg0 -arg1.
对于问题 2,由于$(PATH_MACRO)不是绝对路径,CMake 将其视为相对于源目录的路径。解决此问题的最佳方法可能是使用“生成器表达式”,但如果没有有关您的确切情况的进一步信息,我无法提供更好的答案。
有关生成器表达式的信息,请参阅 的文档add_custom_command。
| 归档时间: |
|
| 查看次数: |
2070 次 |
| 最近记录: |