CMake入门知识总结-生成器与编译器

什么是 CMake

你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。

CMake 就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTKITKKDEOpenCVOSG1

在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

  1. 编写 CMake 配置文件 CMakeLists.txt 。
  2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmakecmake 的区别在于前者提供了一个交互式的界面)。其中, PATH 是 CMakeLists.txt 所在的目录。
  3. 使用 make 命令进行编译。

CMake中的编译器与生成器

在 CMake 中,编译器指的是构建项目时使用的编译器,例如 GCC、Clang 或 MSVC 等。而生成器指的是在生成项目构建过程中使用的工具,例如 Unix Makefiles、Ninja、Visual Studio 等。生成器的作用是生成具体的构建系统的脚本或工程文件,然后使用这些脚本或工程文件进行实际的编译操作。编译器和生成器都是 CMake 的重要组成部分,选择合适的编译器和生成器可以提高项目构建的效率和可靠性。

常用的生成器包括:

  1. Unix Makefiles:生成一个 makefile 文件,可以使用 make 工具进行编译构建。

  2. Ninja:快速而灵活的构建系统,可以生成 Ninja Build 文件,适合大型项目。

  3. Visual Studio:适用于 Windows 平台开发的生成器,可以生成 Visual Studio 项目文件。

常用的编译器包括:

  1. GCC:是 Linux 系统中最常用的编译器,也支持其他平台,是开源的,并且具有很好的兼容性和稳定性。

  2. Clang:是 LLVM 项目的前端,与 GCC 具有相似的功能和兼容性,通常比 GCC 更快。

  3. MSVC:是 Microsoft Visual Studio 的 C++ 编译器,适用于 Windows 平台开发。

编译器和生成器的区别主要在于其生成的构建系统文件和支持的编程语言等方面。编译器是编译源代码并生成可执行文件的工具,而生成器是生成构建系统文件的工具,虽然它们都涉及到代码编译和构建,但是它们的功能不同。在选择编译器和生成器时,需要考虑平台、兼容性、构建时间和可扩展性等因素。
要学习Cmake可参考一下文章
CMake常用命令和学习资源


  1. 这个页面详细罗列了使用 CMake 的知名项目 ↩︎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值