- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 msbuild 和 Visual Studio 命令行工具中可用但 Windows 命令行工具中不可用的其他命令,从另一个可视化 C++ 程序 (project2) 编译和运行一个可视化 C++ 程序 (project1)。如果我在 visual studio 命令行工具中运行它,一切正常。例如,我可以使用 msbuild 进行构建,它可以按我想要的方式工作。当我尝试使用 system() 在我的 C++ 程序中运行相同的命令时,系统调用似乎使用 Windows 命令行,因此找不到任何命令(本例中为 msbuild)。我是在 Windows 上使用 system() 的新手(尽管我在使用 Linux 方面有丰富的经验)。有什么方法可以让我的 C++ 程序在调用系统时使用 Visual Studio 命令行环境(而不是 Windows 命令行环境)?手动使用命令窗口不是一个选项。我需要在 project1 中编译和测试一系列 200-300 个不同版本的程序。这就是我写 program2 的原因
最佳答案
让 Visual Studio 从命令行构建的关键是设置适当的环境。您可能安装了多个不同的 VS 版本,因此您需要一种方法来指定要使用哪个版本。执行此操作的最简单方法可能是具有间接级别,您可以在其中生成命令列表以设置所需的环境并将它们写入批处理文件,然后调用 system()
运行它。
如果您查看 <visual studio>\vc\bin
目录然后你会找到一个文件vcvars32.bat
.这为特定工具集设置环境带来了很多魔力。我认为您可以生成这样的批处理文件:
call path\to\visualstudio\vc\bin\vcvars32.bat
msbuild myproject
请注意,您需要 call
从一个批处理文件调用另一个批处理文件的语法,否则会导致 shell 不返回。
关于c++ - 如何从 system() 使用 Visual Studio 2012 命令行工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772641/
我是一名优秀的程序员,十分优秀!