CMake使用总结.MWB日常笔记.目录搜索1
需积分: 0 145 浏览量
更新于2022-08-03
收藏 353KB PDF 举报
CMake是一种跨平台的构建工具,它通过读取名为`CMakeLists.txt`的配置文件来生成各种构建系统的Makefile或者项目文件,如Visual Studio的解决方案文件、Xcode的项目文件等。CMake的设计目标是简化多平台软件的构建过程,使得开发者无需关心底层构建系统的细节,只需关注于源代码本身。
### 基本概念
1. **CMakeLists.txt**:这是CMake的配置文件,其中包含了构建项目所需的所有指令。每个子目录都可以有自己的`CMakeLists.txt`,这些文件会合并在一起形成整个项目的构建规则。
2. **CMake命令**:CMake提供了许多内置命令,如`project`、`add_executable`、`aux_source_directory`、`include_directories`、`link_directories`、`target_link_libraries`等,用于定义项目、添加源文件、设置头文件和库的路径以及链接依赖库。
3. **构建类型**:CMake支持多种构建类型,如`Debug`和`Release`,可以通过`CMAKE_BUILD_TYPE`变量来指定。`Debug`模式通常包含调试信息,而`Release`模式则优化了性能。
4. **自定义变量**:用户可以设置自定义变量,并通过命令行传递给CMake,如`-DMY_VAR=hello`,然后在`CMakeLists.txt`中使用`message(${MY_VAR})`来显示这个变量的值。
### 示例解析
在给出的例子中,项目结构如下:
- `./a.cpp`
- `./b.cpp`
- `./include/common.h`
- `./include/defines.h`
- `./other/c.cpp`
- `./other/d.cpp`
- `./lib/libB.a`
- `./lib/libBd.a`
- `./lib/libA.so`
- `./lib/libAd.so`
- `./lib/libB.so`
- `./lib/libBd.so`
- `./lib/libC.so`
- `./lib/libCd.so`
CMakeLists.txt文件的主要内容:
1. 使用`cmake_minimum_required(VERSION 2.8)`声明CMake的最低版本需求。
2. `project(helloworld)`定义项目名称。
3. 设置`CMAKE_VERBOSE_MAKEFILE`为`on`,使得构建过程更加透明。
4. 指定C++编译器为`g++`,并设置编译选项。
5. 设置输出路径和源文件列表。
6. 添加头文件和库目录。
7. 根据构建类型选择生成的可执行文件(`hellod`或`hello`)并链接对应的库。
运行`cmake -DCMAKE_BUILD_TYPE=debug .`或`cmake .`将生成Makefile,随后使用`make`进行构建。
### 常用CMake变量
- `PROJECT_SOURCE_DIR`:项目源文件的根目录,即包含`Project`命令的`CMakeLists.txt`所在的目录。
- `CMAKE_C_FLAGS` 和 `CMAKE_CXX_FLAGS`:分别用于设置C和C++的编译选项。
- `CMAKE_C_FLAGS_DEBUG` 和 `CMAKE_CXX_FLAGS_DEBUG`:调试模式下的编译选项。
- `CMAKE_C_FLAGS_RELEASE` 和 `CMAKE_CXX_FLAGS_RELEASE`:发布模式下的编译选项。
### 总结
CMake通过简单的语句和变量就能管理复杂的项目结构,使得跨平台构建变得简单。其灵活性允许用户自定义构建流程,同时通过`CMakeLists.txt`文件保持项目构建的一致性。了解和熟练掌握CMake,对于任何涉及多平台开发的项目都是十分有益的。

村上树树825
- 粉丝: 24
最新资源
- 11-技术先进性和机械设备适用性.doc
- 工业互联网主动标识载体技术白皮书.docx
- 基于校园一卡通系统的数据挖掘研究.docx
- 后极简潮流太空设计是亮点.doc
- [广东]地铁工程右线盾构始发施工方案(中铁建).doc
- 房地产开发成本及收入核算讲义.ppt
- 某经济适用房基础分部工程质量监理评估报告.doc
- 抹灰工程裂缝防治.doc
- 工程部年度工作总结及工作计划.doc
- 徐州某工地临时用水用电施工方案.doc
- 2015年地基处理与防护工程量计算名师精讲.ppt
- 北延配套工程垂直运输方案.docx
- 任职资格标准文件.docx
- 大数据时代政治网络营销的本质研究.docx
- 2015年上半年网络工程师考试下午.doc
- 东港头村庄改造工程(一期)控制价报告.docx