活动介绍

CMake使用总结.MWB日常笔记.目录搜索1

preview
需积分: 0 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,对于任何涉及多平台开发的项目都是十分有益的。
身份认证 购VIP最低享 7 折!
30元优惠券