使用 VC++ 编译生成的 C++ 代码

Compile Generated C++ Code Using VC++

我需要编写一个生成c++代码的程序,编译它,然后运行它,所以我完成了代码生成部分,并将它写入一个名为GeneratedCode.cpp的文件中。现在我停留在编译部分,我写道:

system(R"(call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat")");
system(R"(call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat")");
system("cl GeneratedCode.cpp");

首先,这是正确的方法吗?关于这个主题的信息非常少,尤其是 VC++。如果是,那么我在使用 IDE 或不使用时都会遇到问题。

当使用 IDE 时,它给我:"GeneratedCode.cpp(2): fatal error C1034: iostream: no include path set"。当然,我正在使用 iostream header。

直接运行运行exe时,提示:“'cl'不是内部或外部命令,也不是可运行的程序或批处理文件”。即使我调用了 vcvarsall.bat 和 vcvars32.bat.

每次调用 system_wsystem 都会创建一个新环境,该环境会在调用终止时丢失。如果您的程序需要设置环境变量,如 Visual C++ 命令提示符的 LIBINCLUDE 等,那么多次调用 system 不会成功。

以下是您的选择,按照我推荐的顺序排列:

  1. 一起避开system。为 cl.exe 设置所需的环境块以正确使用字符串连接函数,如在该环境中 here, and call CreateProcess 所示。
  2. 让您的程序编写一个批处理文件,其中包含 cl.exe 正常工作的所有先决条件命令,对其调用 system,然后删除该批处理文件。
  3. 将命令与 && 链接在一起,并使用包含多个命令的大字符串调用一次 system