使用 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++ 命令提示符的 LIB
、INCLUDE
等,那么多次调用 system
不会成功。
以下是您的选择,按照我推荐的顺序排列:
- 一起避开
system
。为 cl.exe
设置所需的环境块以正确使用字符串连接函数,如在该环境中 here, and call CreateProcess
所示。
- 让您的程序编写一个批处理文件,其中包含
cl.exe
正常工作的所有先决条件命令,对其调用 system
,然后删除该批处理文件。
- 将命令与
&&
链接在一起,并使用包含多个命令的大字符串调用一次 system
。
我需要编写一个生成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++ 命令提示符的 LIB
、INCLUDE
等,那么多次调用 system
不会成功。
以下是您的选择,按照我推荐的顺序排列:
- 一起避开
system
。为cl.exe
设置所需的环境块以正确使用字符串连接函数,如在该环境中 here, and callCreateProcess
所示。 - 让您的程序编写一个批处理文件,其中包含
cl.exe
正常工作的所有先决条件命令,对其调用system
,然后删除该批处理文件。 - 将命令与
&&
链接在一起,并使用包含多个命令的大字符串调用一次system
。