项目场景:
使用CMake编译代码,生成VS2017项目,在vs2017中debug模式编译项目
问题描述:
debug模式编译项目后,直接报错
setlocal命令出错error MSB3073
setlocal命令如下:
setlocal
D:\software\cmake_3_20_0\bin\cmake.exe -E copy_directory E:/git/TangClient_dev/dependence/runtime/ E:/git/TangClient_dev/Output/bin/win32/Debug/
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
setlocal
D:\software\cmake_3_20_0\bin\cmake.exe -E copy_directory E:/git/TangClient_dev/dependence/cef/win32/bin/Debug/ E:/git/TangClient_dev/Output/bin/win32/Debug/
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.CMake GUI中CMAKE_INSTALL_PREFIX指定为C盘目录,导致权限不够
2.cmake时,设置的build目录不对的原因。如在源码(CMakelist.txt所在目录)主目录的外侧,新建了build的目录
但实际上我更换了 CMAKE_INSTALL_PREFIX的路径,或是以管理员运行,或是在源码目录下新建build目录,后来仔细看了一下setlocal命令才发现问题。
解决方案:
1.取巧方式解决
1.使用release方式进行编译
2.属性栏中取消优化,为了进行断点调试
如下图
2.分析setlocal
不知道你们的setlocal命令是否一样,或者说错误原因一样,我这边更改错误
错误1:
D:\software\cmake_3_20_0\bin\cmake.exe
更改为带引号
"D:\software\cmake_3_20_0\bin\cmake.exe"
错误2:
文件路径
E:/git/TangClient_dev/Output/bin/win32/Debug/
更改为
E:\git\TangClient_dev\Output\bin\win32\Debug\
错误3:
命令
/b
更改为
\b
以上在管理员权限下编译即可
如果对您有所帮助,请点个赞!
未经允许,禁止转载!