Visual studio 从当前文件编译另一个文件
我正在使用Visual Studio 2012。Visual studio 从当前文件编译另一个文件,visual-studio,visual-c++,visual-studio-2012,preprocessor,conditional-compilation,Visual Studio,Visual C++,Visual Studio 2012,Preprocessor,Conditional Compilation,我正在使用Visual Studio 2012。 我有一个Win32控制台项目,其中包含源文件“1.cpp”。我想从“1 .CPP”的源代码中编译一些其他C++文件(让我们说“2”.CPP)。 我试过这个-: int main() { system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat"); system("C:\\\"Program Files (x86)\"\\\
我有一个Win32控制台项目,其中包含源文件“1.cpp”。我想从“1 .CPP”的源代码中编译一些其他C++文件(让我们说“2”.CPP)。 我试过这个-:
int main()
{
system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat");
system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\bin\\cl.exe /EHsc 2.cpp");
}
我这样做是因为我想使用/D
选项编译“2.cpp”,在“2.cpp”中定义一个宏,其值在“1.cpp”中计算。类似这样的东西-:
int main()
{
string mystring;
system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat");
system(("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\bin\\cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
}
system(("C:\\\"Program Files...vcvarsall.bat && C:\\\"Program Files...cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
尽管在调用“cl.exe”之前执行了“vcvarsall.bat”,但我仍然收到一条错误消息:“程序无法启动,因为您的计算机缺少mspdb110.dll。请尝试重新安装程序以解决此问题。”
如前所述,我可能需要设置一些环境变量。有没有不需要设置环境变量的方法?如果否,那么如何从源“1.cpp”中设置这些变量?对“系统”的每次调用都会产生一个新进程。在一个进程中调用cvarsall不会影响另一个进程 您需要创建一个批处理文件,同时使用命令和调用
cmd/c mybat.bat我找到了一个简单的方法-:
int main()
{
string mystring;
system("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\vcvarsall.bat");
system(("C:\\\"Program Files (x86)\"\\\"Microsoft Visual Studio 11.0\"\\VC\\bin\\cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
}
system(("C:\\\"Program Files...vcvarsall.bat && C:\\\"Program Files...cl.exe /EHsc /DMYMACRO="+mystring+" 2.cpp").c_str());
我不懂批处理编程。您能否确切地说明如何将
system()
命令转换为相应的批处理命令?换句话说,“mybat.bat”的确切内容是什么?会是什么样的?如果是,那么我想我需要使用文件处理从程序中创建这个批处理文件,然后使用system(“cmd/cmybat.bat”)
调用它。或者你是说别的什么?