使用cmake在Visual Studio的文件路径中创建带有双引号和$的构建事件的正确方法是什么

时间:2019-02-11 19:04:23

标签: visual-studio visual-studio-2015 cmake

在我的项目中,我试图通过Visual Studio中的post-build event命令将文件目录复制到另一个目录中。

我想出了此命令行代码以用于项目xcopy /Y /I /E "$(WorkingDirectory)/abra/kadabra" "$(LocalDebuggerWorkingDirectory)/kadabra"

我想从cmake和据我所知自动生成此命令 add_custom_command方法是我应该使用的方法...

但是当我尝试

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND xcopy /Y /I /E "$(WorkingDirectory)/abra/kadabra" "$(LocalDebuggerWorkingDirectory)/kadabra")

我将其作为Visual Studio中的命令行选项

    setlocal
xcopy /Y /I /E $(WorkingDirectory)/abra/kadabra $(LocalDebuggerWorkingDirectory)/kadabra
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我最终找到了答案,基本上是避免引号。我将此"$(WorkingDirectory)/abra/kadabra" "$(LocalDebuggerWorkingDirectory)/kadabra")变成了\"$(WorkingDirectory)/abra/kadabra\" \"$(LocalDebuggerWorkingDirectory)/kadabra\"),但是,我仍然得到了所有额外的setlocal以及%errorlevel%的东西,这不是我想要的。但是,这不会影响我的项目。