我已经检查了 buid 目录,但在那里没有找到 makefile。Visual Studio 2008 是如何构建项目的?它使用makefile吗?
2 回答
NMAKE 实用程序自称为 Microsoft C/C++ 优化编译器时就已随 Visual C++ 一起分发,并且与 Unix make 非常相似。以前版本的 IDE 实际上使用了 NMAKE 生成文件,但现在不再是这样了。如果您愿意,您可以自己编写 NMAKE makefile,但听起来您想知道 IDE 是做什么的。
从 VS2010 开始,构建系统更改为 MSBUILD,bertelmonster 提到过。但不是在VS2008中。
在 VC++ 6.0 中,C++ 项目将自己的构建引擎集成到 msdev.exe中。
在 VS2002 - VS2008 中,它是一个单独的工具, VCBUILD。但是您仍然可以通过主 IDE devenv.exe 调用它,请参阅 /BUILD 选项,如果您的解决方案中有项目间依赖关系,那么 devenv 是最好的方法。
默认情况下,VS9 不像 Linux 风格的 IDE 那样使用 makefile。相反,VisualStudio 使用“解决方案”和“项目”文件。项目文件(C/C++ 项目的 *.vcproj)基本上是生成文件的替代品,它包含指令、编译器指令、标志和编译单个“项目”所需的所有其他内容。在这种说法中,项目是单个输出文件,例如 EXE 或 DLL。但是同样的机制可以用来产生任何类型的输出,包括 TLB、文本文件、小部件和冰淇淋蛋筒(如果你的机器有强大的硬件:))
“解决方案”是项目的集合,解决方案文件 (*.sln) 通常包含构建整个应用程序套件所需的项目列表。它还包含依赖信息,以便以正确的顺序构建项目。
解决方案和项目文件是人类可读的文本,但在 VS 世界中,您几乎永远不想像手动调整 makefile 那样自己编辑这些文件。相反,您将使用 IDE 更改编译器标志、预处理器指令、输出目录以及所有其他内容。
这就是 VS默认的工作方式,但 VS 也能够以与 Linux 风格的 IDE 大致相同的方式使用 makefile。在这种情况下,它仍然使用解决方案文件,因此您可以在同一解决方案中混合使用 makefile 的项目与使用项目文件的项目。VS IDE 在这方面实际上是非常强大的,它可以让你做任何你想做的事情。然而,这种能力是有代价的——IDE 中提供了如此多的特性和功能,它可能相当复杂,并且需要您可能认为是毫无根据的用户脑力才能完全理解。
如果您想创建一个 makefile 项目,您可以通过执行File>New>Project... 然后从项目模板的主Visual C++列表中选择Makefile Project来实现。