CMake编译VS工程,生成解决方案时遇到错误:error MSB3073: 命令“setlocal”

15 篇文章 1 订阅
2 篇文章 0 订阅

一、问题描述

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

二、问题原因及解决方案

(一)原因

  1. 由于在CMake GUI中CMAKE_INSTALL_PREFIX指定为C盘目录,所以install编译生成时需要权限。此时,需要以管理员身份运行Vs即可,见解决方案1。
    图2
  2. cmake时,设置的build目录不对,见解决方案2。

(二)解决方案

  1. 以管理员身份运行vs
    (1)以vs2013为例,找到vs2013快捷方式,右键属性,找到目标位置的devenv.exe(vs安装路径),我的目标位置为“D:\ProgramFiles\VS2013\Common7\IDE”
    图3
    (2)找到devenv.exe文件 右键-兼容性疑难解答
    图4
    (3)选疑难解答程序
    图5
    (4)选择该程序需要附加权限,点击下一页
    图6
    (5)点测试程序(不点击不让下一页),点下一页
    注意:
    测试时可能会打开vs,询问是否允许对设备进行更改(即是否用管理员权限运行),如下图2所示,选择是,打开vs后关闭即可。以后每次打开vs工程时都会有此询问,点是即可
    图7
    图8
    (6)是,保存设置
    图9
    (7)修复完成,关闭
    图10
    上述操作完成后,即开启以管理员身份运行vs,但需注意的是每次打开.sln工程时,会跳出询问,点是即可。

  2. CMake编译时,正确设置build目录
    说明:
    本人尝试以下方法未解决问题,仍然报相同错误。鉴于是网上推荐做法,故放在此处,如有朋友用此方式成功解决问题,可在评论区评论。

    错误做法:
    在源码(CMakelist.txt所在目录)主目录的外侧,新建了build的目录,图中,zxing-cpp-master为主目录。
    图11
    正确做法:
    在主目录zxing-cpp-master下新建这个build目录。
    图12

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

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

三、结语

        以上为error MSB3073: 命令“setlocal”的原因分析及解决方案。原创不易,欢迎大家的点赞、收藏、评论、打赏~

参考链接:
CMake编译的VS工程,安装时遇到错误:error MSB3073: 命令“setlocal
设置VS以管理员身份运行
VS 设置编译后的程序可以以管理员身份运行

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值