使用 CMake 构建有什么好处?

sha*_*yan 6 cmake visual-studio

我正在研究 SFML,我很好奇我可以自己编译它的选项。我在教程中找到了它,但从第一行开始我就感到困惑:

CMake 是一个开源元构建系统。它不是构建 SFML,而是构建构建 SFML 的内容:Visual Studio 解决方案...

  1. Visual Studio 中也有一个构建选项,该构建和 CMake 构建之间有什么区别吗?

  2. 它构建了构建 SFML 的内容,这意味着什么?是指库文件吗?

  3. 视觉工作室解决方案?这是什么意思?据我所知,当我打开一个新项目时,它位于一个解决方案中,我可以向该解决方案添加新项目(我很困惑为什么解决方案中也必须有多个项目!)。

CMake 构建解决方案意味着什么?它是做什么用的?

usr*_*567 5

  1. 有源代码。人们想要编译它。在终端中输入编译命令既困难又烦人。

  2. 人们发明构建系统,是为了使 1.) 更容易。例如,make 文件或 Visual Studio 集成并存储在其文件中的内容(称为解决方案)。

  3. 有些项目是跨平台的。他们可以提供 make 文件、解决方案文件、Xcode、Eclipse 等文件。这变得困难且烦人。

  4. 人们发明系统,创建构建系统以简化 3.)。从一组通用文件中,可以引导多个不同的构建系统。

在您的实际情况中:CMake 创建解决方案文件,您可以打开解决方案文件并使用它构建 SFML。

  • 并不容易,而是本质。三年C++,取决于你做过的项目。跨平台并针对一系列编译器版本?或者只是单一操作系统、IDE 和编译器的固定组合? (2认同)

mas*_*coj 3

CMake 是跨平台开发的绝佳工具,无需维护单独的构建实用程序的麻烦。在 Windows 上,CMake 可以基于其 CMakeLists.txt 文件创建 Visual Studio 解决方案文件。在 Linux 上,CMake 通常输出一个 makefile。CMake 与许多构建工具兼容,我建议阅读其网站上的更多文档以获取更多信息。

编辑:只是为了更清楚。CMake 实际上构建了构建 SFML 的内容,因为它创建了用于构建 SFML 的 Visual Studio 解决方案。

  1. 解决方案的 VS 构建是构建库本身。CMake 构建会生成 VS 解决方案,您可以使用它来构建库。

  2. 参见 1。

  3. VS 解决方案是包含 1 个或多个项目的完整可构建设置。解决方案可以包含多个项目,因为 VS 限制每个项目只能有 1 个输出。如果您想要多个输出(例如 4 个 dll),每个输出都需要它自己的项目。

  • @shayan 并不是每个人都使用 Visual Studio,即使在 Windows 上也是如此。很高兴能够在 CMake 中编写一组构建规则,这些规则将与 Windows、Linux、Mac 等操作系统上的 Visual Studio、Clang、GCC 和其他编译器一起使用,并利用 make、ninja 等构建系统。必须手动编写所有这么多构建文件将是一件痛苦的事情。 (4认同)