CMake 与 Make

1. 前面的话

程序员已经使用 CMake 和 Make 很长时间了。当您加入一家大公司或开始从事具有大型代码库的项目时,您需要处理所有这些构建。

您一定已经看到了那些“CMakeLists.txt”文件。您应该在终端上运行“cmake”和“make”命令。很多人只是盲目地遵循指示,并不真正关心我们为什么需要以某种方式做事。

整个构建过程是什么?为什么要这样构建?CMake 和 Make 有什么区别?有关系吗?它们可以互换吗?  

事实证明,它们完全不同。重要的是要了解它们之间的差异,以确保您不会陷入困境。在讨论差异之前,让我们先看看它们是什么。

2. Make

我们设计软件系统的方式是首先编写代码,然后编译器编译它并创建可执行文件。这些可执行文件是执行实际任务的文件。“Make”是一种控制从程序的源文件生成程序的可执行文件和其他非源文件的工具。

“Make”工具需要知道如何构建你的程序。它从名为“makefile”的文件中获取有关如何构建程序的知识。这个 makefile 列出了每个非源文件以及如何从其他文件计算它。当你编写一个程序时,你应该为它编写一个makefile,这样就可以使用“Make”来构建和安装程序。简单的东西!如果您不理解它,请返回并再次阅读该段落,因为它对下一部分很重要。

3. 为什么我们需要“make”?

### 使用 CMake 构建项目的方法 #### 创建基本的 `CMakeLists.txt` 文件 为了使用 CMake 进行构建,核心文件是 `CMakeLists.txt`。这个文件定义了项目的结构以及编译指令。 对于简单的项目,可以创建如下所示的基础配置: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject VERSION 1.0 LANGUAGES CXX) add_executable(${PROJECT_NAME} main.cpp) ``` 这段脚本指定了最低版本需求、项目名称及其版本号,并声明了一个可执行目标[^2]。 #### 配置第三方库支持 当涉及到外部依赖项时,如果这些库本身并不提供官方的 CMake 支持,则可能需要编写自定义查找模块来集成它们。这通常意味着要为那些不兼容 CMake 的第三库开发特定于平台或环境的支持代码[^3]。 #### 整合 Qt 到 CMake 工程中 针对基于 Qt 的应用程序,在 `CMakeLists.txt` 中加入对 Qt 库的支持可以通过调用 `find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)` 来实现。之后就可以像下面这样链接所需的组件到你的应用上: ```cmake set(CMAKE_AUTOMOC ON) set(CMAKE_CXX_STANDARD 17) find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) add_executable(myapp main.cpp widget.ui form.qrc) target_link_libraries(myapp PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets) ``` 此设置不仅启用了自动 MOC 处理还设置了 C++ 标准版本并找到了必要的 Qt 组件用于链接。 #### 生产适用于 macOS 的包或框架 虽然没有具体展示如何操作,但是确实能够通过调整 CMake 设置让其生成适合 Mac OS 平台的应用程序包 (bundle) 或者动态加载库 (framework),特别是在 Xcode 下工作的时候[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值