我目前正在开发一个小型评分应用程序(用于C ++课程),它将编译学生的.cpp文件并将输出与主服务器进行比较。我正在使用QT Creator开发UI以及后端组件(包括一些SQLite集成),我一直在努力寻找一种自动和离散地编译文件的方法。
我最初在VS2010中开发了一个使用VS命令行编译器的小应用程序 - 它可以工作,但只能在调试模式下(当程序从cmd.exe中执行时)。当我转移到Release时,无法识别编译命令(“cl”)。这是一个小代码段:
int main()
{
system("vcvarsall.bat"); // To set up VS Command Prompt environment
_putenv("INCLUDE=<my include paths>"); // Include paths for compilation
_putenv("LIB=<my lib paths>"); // Include paths for linking
system("cl /EHsc \"Student1.cpp"); // Compilation code
return 0;
}
在Release中执行时,“cl”和“cl.exe”都不会被识别为命令。我正在从QT应用程序中执行此程序的变体作为.exe文件,将文件名传递给此函数,因此它需要处于Release形式。如何在此应用程序中使用命令行编译器?
谢谢!
答案 0 :(得分:0)
我没有教学背景,但我的第一个建议是让你的学生提供一个makefile。 NMake是VC的系统,所以你可以试试。
如果您仍想使用自己的代码进行编译,我建议使用SCons而不是控制台应用程序。 SCons和Python是免费的,非常容易设置。你的例子变成了:
Program(target='Student1App', source=['Student1.cpp'])
如果您选择,您可以在C ++应用程序中调用scons,并且在调用之后,假设没有构建错误,可执行文件将可用。