Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 从另一个项目编译Visual Studio 2010项目_Visual Studio 2010_Build_Mfc_System - Fatal编程技术网

Visual studio 2010 从另一个项目编译Visual Studio 2010项目

Visual studio 2010 从另一个项目编译Visual Studio 2010项目,visual-studio-2010,build,mfc,system,Visual Studio 2010,Build,Mfc,System,我已经创建了一个MFC项目,我想用它编译另一个MFC项目。 我正在使用system()函数来执行此操作,但它不起作用 system("set PATH=""C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE"" && devenv C:/project_path/Project.sln /Build "); 首先,我设置Windows提示符的路径,以了解devenv命令,然后构建我的项目。 我已经在W

我已经创建了一个MFC项目,我想用它编译另一个MFC项目。 我正在使用
system()
函数来执行此操作,但它不起作用

system("set PATH=""C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE""  && devenv C:/project_path/Project.sln /Build ");
首先,我设置Windows提示符的路径,以了解
devenv
命令,然后构建我的项目。 我已经在Windows命令提示符下测试了命令行,它运行正常。通过在我的代码中使用它,它无法识别
devenv
命令。我做错了什么?如果有其他方法继续,请告诉我好吗?

在执行命令时,“设置”状态是临时的。 退出系统命令时,所有修改都将丢失

如果要让它们持久化,必须像这样使用setx:

setx PATH=%PATH%;"C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE" /M
注意:别忘了结尾的/M

setX OLDPATH=%PATH% /M
setX PATH=%PATH%; .... /M
devenv C:/project_path/Project.sln /Build
setX PATH=%OLDPATH% /M
但是我不认为这是你想要做的,因为每次你执行station时,你都会再次添加额外的路径

我建议您最终将当前路径存储在类似OLDPATH的东西中,并在最后将其恢复

setX OLDPATH=%PATH% /M
setX PATH=%PATH%; .... /M
devenv C:/project_path/Project.sln /Build
setX PATH=%OLDPATH% /M

使用批处理文件。不能将SET与system一起使用,因为它只是修改当前环境(请阅读关于SETX的另一个答案)

我不想让这些环境变量在我的系统中是静态的,因为我经常安装2008、2010、2012和2013

设置所有必需的环境变量的最佳方法是 调用“%VS100COMNTOOLS%VSVARS32.BAT”

之后,无需使用路径即可轻松调用DEVENV。
但是所有行必须在一个批中,以便命令处理器使用一个环境。

谢谢您的回答。M是什么意思?是分开命令吗?不是分开命令,但必须使用/M在系统环境中设置新值,否则命令的工作方式与标准集类似,并在本地环境中存储新值。