Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1301|回复: 0
打印 上一主题 下一主题

VS 编译CMake生成项目 命令setlocal报错(error MSB3073)

[复制链接]

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
跳转到指定楼层
楼主
发表于 2023-12-30 15:48:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目场景:
使用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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
原因分析:
虚假原因:
从网上寻找解决办法,大多原因说是由于
1.CMake GUI中CMAKE_INSTALL_PREFIX指定为C盘目录,导致权限不够

2.cmake时,设置的build目录不对的原因。如在源码(CMakelist.txt所在目录)主目录的外侧,新建了build的目录

但实际上我更换了 CMAKE_INSTALL_PREFIX的路径,或是以管理员运行,或是在源码目录下新建build目录,后来仔细看了一下setlocal命令才发现问题。

实际原因:
问题出在哪里就找哪里!查看setlocal


解决方案:
1.了解setlocal
CMake编译VS项目时中可以添加事件

if(WIN32)
add_custom_command(TARGET ${proj_name} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        "${DuiLib_dll_path}/bin/$<CONFIGURATION>/DuiLib.dll"
        "${bin_dir}/$<CONFIGURATION>")
endif()
1
2
3
4
5
6
POST_BUILD——生成后事件
copy_if_different 文件不同则进行拷贝
2.分析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/
1
2
拷贝E:/git/TangClient_dev/dependence/runtime/到E:/git/TangClient_dev/Output/bin/win32/Debug/

错误1:
拷贝啥玩意不知道

错误2:
存不存在该路径

错误3:
如果存在该路径看一下文件路径分隔符是不是有问题

E:/git/TangClient_dev/Output/bin/win32/Debug/
1
更改为

E:\git\TangClient_dev\Output\bin\win32\Debug\
1
错误3:
命令

/b
1
更改为

\b
1

————————————————
版权声明:本文为CSDN博主「山河君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42956179/article/details/115333145

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-22 16:27 , Processed in 0.059528 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表