【发布时间】:2010-12-24 06:49:48
【问题描述】:
在 Windows 上什么是 Makefile 的好替代品?
我正在使用 cl.exe 编译一组 c++ 文件(.cpp 和 .h)。
我宁愿不使用 Makefile,因为我想尽量减少人们构建我的应用程序所需的 3rd 方实用程序的数量。
德鲁·J·索恩。
【问题讨论】:
在 Windows 上什么是 Makefile 的好替代品?
我正在使用 cl.exe 编译一组 c++ 文件(.cpp 和 .h)。
我宁愿不使用 Makefile,因为我想尽量减少人们构建我的应用程序所需的 3rd 方实用程序的数量。
德鲁·J·索恩。
【问题讨论】:
VisualStudio 自带 nmake,不需要任何第三方工具。
【讨论】:
MSBuild,微软构建系统。它是 Visual Studio 使用的基于 XML 的构建系统。如果您安装了 Visual C++,则您已经安装了 MSBuild。
Visual Studio 项目文件只是 MSBuild 文件,因此您可以在 Visual Studio 中使用项目文件执行的任何操作都可以手动执行(反之亦然;您可以在命令行上构建 Visual Studio 项目)。
【讨论】:
我认为这取决于您为 Windows 支持的 C++ 编译器。如果您专门针对 Visual Studio 用户,那么只需提供必要的项目文件就可以解决问题,因为您的用户可以在 IDE 中打开它们或使用 devenv.exe/msbuild.exe 通过命令行构建您的项目。在这种情况下,我的建议是为您支持的最旧版本的 Visual Studio 提供项目文件,因为较新的版本能够将文件转换为所需的格式。
如果您还尝试支持其他适用于 Windows 的 C++ 编译器,则会变得更加棘手。要么您必须为他们的所有 IDE 提供项目文件,如果您无法访问所有 IDE,这可能会很棘手,或者您必须选择最低公分母,这将是最简单的 Makefile并希望大多数程序员都安装了make,这不是一个不合理的假设。
如果您的软件需要 Boost 库,另一种方法是提供一组 .jam 文件,因为大多数拥有 Boost 的程序员可能在构建 Boost 时就已经将 bjam 浮动回来了。虽然 bjam 不像 make 那样简单,但它确实具有主要优势,即它已经知道如何处理多个编译器。但如果分发的软件需要 Boost,我只会考虑 bjam,否则它是另一个不需要的依赖项。
【讨论】: