CMake:简介及构建集成编译环境

文章目录

      • 一、CMake介绍及插件安装配置
        • 1.1 Linux环境安装CMake
        • 1.2 vscode环境安装CMake
      • 二、CMake构建集成编译环境
        • 2.1 Linux上CMake使用
          • 2.1.1 编译实例一
          • 2.1.2 编译实例二
        • 2.2 vscode上CMake使用
      • 三、CMake常用预定义变量

一、CMake介绍及插件安装配置

CMake: 使用简单方便,可以跨平台,构建项目编译环境。比直接写Makefile简单(在构建大型工程编译时,需要写大量的文件依赖关系),可以通过简单的CMake配置生成负责的Makefile文件,一个命令便将我们项目想编译的可执行文件、静态库、动态库都编译出来了。

1.1 Linux环境安装CMake

1、我们使用的系统为centos7,可以直接从yum仓库进行安装。
在这里插入图片描述
2、安装完成后,使用命令查看cmake版本。
在这里插入图片描述
 

1.2 vscode环境安装CMake

1、vscode下载相应插件。
CMake:简介及构建集成编译环境_第1张图片
2、shell终端下查找cmake位置,我们系统上路径为/usr/bin/camke。
在这里插入图片描述
3、点击CMake Tools的扩展设置。
CMake:简介及构建集成编译环境_第2张图片
选择远程主机配置,找到Cmake:Build Environment,添加相应环境变量即可。
CMake:简介及构建集成编译环境_第3张图片

 

二、CMake构建集成编译环境

2.1 Linux上CMake使用
2.1.1 编译实例一

我们平常在Linux上用命令编译链接文件时,可能会涉及以下几项:
在这里插入图片描述
我们有一个muduo_server.cpp文件,命令如下:
在这里插入图片描述
我们可以使用CMake配置文件来完成同样功能,项目根目录建立CMakeList.txt文件,cmake命令会从项目根目录找它。
在这里插入图片描述
cmake命令会执行目录下的CMakeLists.txt配置文件里面的配置项,一个简单的CMakeLists.txt的配置文件内容如下:
CMake:简介及构建集成编译环境_第4张图片
编写完成执行cmake .会生成相应的Makefile文件。
CMake:简介及构建集成编译环境_第5张图片
再执行make命令,即可生成相应的可执行文件。
CMake:简介及构建集成编译环境_第6张图片
 

2.1.2 编译实例二

通过实例一虽然能够成功编译生成出来可执行文件,但是我们发现会生成非常多的中间文件,与项目文件混在一起看起来不清晰。
CMake:简介及构建集成编译环境_第7张图片
一般实际开发时,我们会分清楚相应目录,项目结构看起来就比较清晰了。

bin:生成的可执行文件
lib:生成的中间库文件
include:头文件
src:源文件
build:项目编译时产生的临时中间文件
test:测试文件
thirdparty:依赖的第三方库
CMakeLists.txt:CMake配置文件
autobuild.sh:一键编译脚本

例如,此处我们要将项目生成的所有中间文件都放入一个build目录中,可执行文件放入bin目录中。
首先我们需要修改CMakeList.txt,添加可执行文件最终的存储路径的语句。
在这里插入图片描述
然后执行下面的命令,即可看到我们预期的结果。
CMake:简介及构建集成编译环境_第8张图片
 

2.2 vscode上CMake使用

需要在远程连接的工程根路径下建立一个主CMakeLists.txt。
CMake:简介及构建集成编译环境_第9张图片
主CMakeLists.txt添加相应配置,指定搜索的子目录为要参与构建的项目。
CMake:简介及构建集成编译环境_第10张图片
工具启动时先处理主CMakeList.txt,再处理muduocode里的子CMakeList.txt,如图为子CMakeList.txt。
CMake:简介及构建集成编译环境_第11张图片
再直接点击vscode里cmake的按钮即可将生成的所有中间文件都放入一个build目录中,可执行文件放入bin目录中,无论是Linux上直接操作还是vscode进行配置,可以依据自己的需求进行改变。
CMake:简介及构建集成编译环境_第12张图片
 

三、CMake常用预定义变量

以下为CMake常用预定义变量:
1、PROJECT_NAME:通过 project() 指定项目名称;
2、PROJECT_SOURCE_DIR:工程的根目录;
3、PROJECT_BINARY_DIR:执行 cmake 命令的目录;
4、CMAKE_CURRENT_SOURCE_DIR:当前 CMakeList.txt 文件所在的目录;
5、CMAKE_CURRENT_BINARY_DIR:编译目录,可使用 add subdirectory 来修改;
6、EXECUTABLE_OUTPUT_PATH:二进制可执行文件输出位置;
7、LIBRARY_OUTPUT_PATH:库文件输出位置;
8、BUILD_SHARED_LIBS:默认的库编译方式 ( shared 或 static ) ,默认为 static;
9、CMAKE_C_FLAGS:设置 C 编译选项;
10、CMAKE_CXX_FLAGS:设置 C++ 编译选项;
11、CMAKE_CXX_FLAGS_DEBUG:设置编译类型 Debug 时的编译选项;
12、CMAKE_CXX_FLAGS_RELEASE:设置编译类型 Release 时的编译选项;
13、CMAKE_GENERATOR:编译器名称;
14、CMAKE_COMMAND:CMake 可执行文件本身的全路径;
15、CMAKE_BUILD_TYPE:工程编译生成的版本, Debug / Release;

你可能感兴趣的:(软件配置及使用,程序人生,恰饭,经验分享,cmake,工具)