我创建了一个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
命令。我究竟做错了什么?如果有其他方法可以继续,请告诉我吗?
答案 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而无需使用路径。 但是所有行必须在一个批处理中,因此命令处理器使用一个环境。