如何在Visual Studio中使用makefile?

我听说了许多关于makefile以及它们如何简化编译过程。 我正在使用VS2008。 有人可以build议一些在线参考或书籍,我可以find更多关于如何处理它们?

8 Solutions collect form web for “如何在Visual Studio中使用makefile?”

一个UNIX的家伙可能告诉过你。 🙂

你可以在VS中使用makefile,但是当你这样做的时候,绕过了MSVC IDE中的所有内置function。 Makefiles基本上是build设者的reinterpret_cast。 IMO最简单的事情就是使用解决scheme。

Microsoft程序维护实用程序(NMAKE.EXE)是一个基于描述文件中包含的命令生成项目的工具。

NMAKE参考

回答具体问题…

我正在使用VS2008。 有人可以build议一些在线参考或书籍,我可以find更多关于如何处理它们?

这个链接将通过与Visual Studio的映射为您介绍Makefiles。

针对Visual Studio开发人员的Makefiles简介

我听说了许多关于makefile以及它们如何简化编译过程。

Makefilesfunction强大且灵活,但可能不是简化过程的最佳解决scheme。 考虑这个链接中解释的抽象构build过程的CMake。

用于Visual Studio开发人员的CMake

我实际上使用一个makefile来构build任何依赖项,然后调用devenv来构build一个特定的项目,如下所示:

debug: coratools_debug devenv coralib.vcproj /build debug coratools_debug: nothing cd ../coratools nmake debug cd $(MAKEDIR) 

你也可以使用msbuild工具来做同样的事情:

 debug: coratools_debug msbuild coralib.vcxproj /p:Configuration=debug coratools_debug: nothing cd ../coratools nmake debug cd $(MAKEDIR) 

在我看来,这比试图找出过于复杂的视觉工作室项目pipe理scheme要容易得多。

一个makefile的VS等价物是一个“解决scheme”(过分简化,我知道)。

Makefiles和构build文件是关于自动化您的构build。 如果您使用MSBuild或NAnt等脚本,则可以直接从命令行构build项目或解决scheme。 这反过来可以使构build自动化,让它由构build服务器运行。

除了构build解决scheme之外,构build脚本通常还包括运行unit testing,报告代码覆盖率和复杂性等的任务。

如果您询问实际的命令行makefiles,那么您可以导出一个makefile,或者您可以通过命令行在解决scheme文件上调用MSBuild。 你想用makefile做什么?

您可以在SO上searchMSBuild以获取更多详细信息。

总结一个完整的解决scheme…

有两个选项:

  1. 从Visual Studio的开发人员命令提示符使用NMAKE

快捷方式存在于您的开始菜单中。 查看makefile文件以查看是否有任何“设置”操作。 动作显示为冒号前的第一个单词。 通常情况下,所有好的makefiles都有一个“all”动作,所以你可以input:NMAKE all

  1. 为每个二进制创build一个解决scheme和项目文件。

大多数精心devise的开源解决scheme都提供了一个makefile文件,其中包含一个设置操作来为您生成Visual Studio项目文件,因此在Makefile中首先查找这些文件。

否则,您需要将每个文件或一组文件和文件夹拖放到在Visual Studio中创build的每个新build项目中。

希望这可以帮助。

  • 如何检查string的第一个字符,如果一个字母,任何字母
  • 点击透明的Visual C#窗体窗体?
  • 在Visual Studio中显示C ++文件的#include层次结构
  • Windows Phone 8模拟器错误 - 创build交换机时发生了一些事情
  • .NET Framework 4.0客户端configuration文件与.NET Framework 4.0
  • 可能/不太可能等同于MSVC
  • 如何打印到Win32应用程序的debugging输出窗口?
  • 添加<mimeMap>条目对IIS Express上的其他静态内容导致500
  • 数据库无法打开,因为它是版本782.此服务器支持版本706和更早版本。 降级path不受支持
  • 在MSBuild中PreBuildEvent,BeforeBuild目标和BeforeCompile目标之间有什么区别?
  • 什么是Visual Studio中的解决scheme文件夹