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

时间:2014-01-22 03:22:48

标签: 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 Prompt知道devenv命令然后我构建我的项目。 我在Windows命令提示符下测试了命令行,但它确实有效。通过在我的代码中使用它,它无法识别devenv命令。我究竟做错了什么?如果有其他方法可以继续,请告诉我吗?

2 个答案:

答案 0 :(得分:0)

“set”语句是暂时执行命令本身的。 退出系统命令后,所有修改都将丢失。

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

setx PATH=%PATH%;"C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE" /M

N.B。不要忘记最后的/ M.

但我不认为这是你想做的事情,因为每次你执行这个陈述时你都会再次添加额外的路径。

我建议你最终将当前的PATH存储在像OLDPATH这样的东西中,并在最后将它恢复。

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

答案 1 :(得分:0)

使用批处理文件。你不能在系统中使用SET,因为它只是修改当前的envorinment(阅读关于SETX的其他答案)。

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

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

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