一、问题描述
CMake编译ZXing-cpp,编译成功后,打开项目,x86(win32)平台生成解决方案成功,但在x64平台,debug模式下报错:error MSB3073: 命令“setlocal”,如下图:

二、问题原因及解决方案
(一)原因
- 由于在CMake GUI中CMAKE_INSTALL_PREFIX指定为C盘目录,所以install编译生成时需要权限。此时,需要以管理员身份运行Vs即可,见解决方案1。

- cmake时,设置的build目录不对,见解决方案2。
(二)解决方案
-
以管理员身份运行vs
(1)以vs2013为例,找到vs2013快捷方式,右键属性,找到目标位置的devenv.exe(vs安装路径),我的目标位置为“D:\ProgramFiles\VS2013\Common7\IDE”

(2)找到devenv.exe文件 右键-兼容性疑难解答

(3)选疑难解答程序

(4)选择该程序需要附加权限,点击下一页

(5)点测试程序(不点击不让下一页),点下一页
注意:
测试时可能会打开vs,询问是否允许对设备进行更改(即是否用管理员权限运行),如下图2所示,选择是,打开vs后关闭即可。以后每次打开vs工程时都会有此询问,点是即可。


(6)是,保存设置

(7)修复完成,关闭

上述操作完成后,即开启以管理员身份运行vs,但需注意的是每次打开.sln工程时,会跳出询问,点是即可。 -
CMake编译时,正确设置build目录
说明:
本人尝试以下方法未解决问题,仍然报相同错误。鉴于是网上推荐做法,故放在此处,如有朋友用此方式成功解决问题,可在评论区评论。错误做法:
在源码(CMakelist.txt所在目录)主目录的外侧,新建了build的目录,图中,zxing-cpp-master为主目录。

正确做法:
在主目录zxing-cpp-master下新建这个build目录。

-
个例解决方案,仅供参考。查看报错信息,分析原因,本报错是解决方案中INSTALL项目,查看发现INSTALL项目对于程序运行无用,因此,打开配置管理器,将INSTALL项目的生成取消,再重新生成解决方案,生成成功,项目可以正常运行。

-
由于本工程由多个项目组成,其中一个项目为启动项目,设置启动项目的工程属性,项目-XXX 属性-配置属性-链接器-清单文件。设置完成后,点调试-开始执行不调试,会弹出解决方案1-(5)中是否允许更改的弹窗,点是,程序可以正常运行。但是,若要调试运行,需重新开启管理员权限,根据提示进行重启vs,再进行调试运行即可。

三、结语
以上为error MSB3073: 命令“setlocal”的原因分析及解决方案。原创不易,欢迎大家的点赞、收藏、评论、打赏~
参考链接:
CMake编译的VS工程,安装时遇到错误:error MSB3073: 命令“setlocal
设置VS以管理员身份运行
VS 设置编译后的程序可以以管理员身份运行

本文详细介绍了在使用CMake编译ZXing-cpp库时遇到的x64平台debug模式下errorMSB3073错误的原因及解决方案。问题源于CMAKE_INSTALL_PREFIX指定到C盘导致权限不足,以及CMake构建目录设置不正确。解决方法包括以管理员身份运行VS和调整CMake构建目录。此外,还提供了一个个例解决方案,即禁用无关的INSTALL项目生成。文章最后提醒读者,每次打开解决方案时可能需要确认管理员权限。
57

被折叠的 条评论
为什么被折叠?



