CMake基础学习笔记

CMake简介
  • 全称Cross Platform Make,简称CMake
  • 主要为了跨平台需求,Windows、Linux、Unix、Mac、iOS、Android
  • 一款优秀的工程构建工具,类似工具有autotools等
  • 为特定IDE构建工程项目,如CodeLite、CodeBlocks等跨平台开源IDE
  • 编译生成目标可以使可执行文件,动静态库
CMake编译原理
  • 利用cmake命令读取CMakeLIsts文件生成Makefile文件
  • 利用make命令读取Makefile文件生成最终输出目标文件
编译想到的问题
  • 如何组织项目的编译框架
  • 最终输出的目标是什么,可执行程序,动态库,静态库
  • 如何配置输出目标文件的指定编译参数,编译参数以及环境,源文件等等
  • 如何指定输出目标连接参数,如内外部依赖,连接外部库等等
CMake语法主体
  • 工程配置部分
# 包括工程名、编译调试模式、编译系统语言
# 指定CMake最低版本号要求
cmake_minimum_required (VERSION num)
# 项目信息
project (current_project_name)
# 设置编译版本 如“-std=c++11”、“-std=c++14”、“-std=c++17”、“-std=c++20”
set (CMAKE_CXX_FLAGS "-std=c++11")
# 设置编译模式,如“Debug”、“Release”
set (CMake_BUILD_TYPE "Debug")
  • 依赖执行部分
# 包括工程包、头文件、依赖库等等
# 引入外部依赖
find_package (std_lib_name VERSION REQUIRED)
# 生成库(动、静)类型
add_library (<name> [lib_type] source1)
# 设置头文件路径
set (include_dir "${PROJECT_SOURCE_DIR}/include/")
# 指定头文件路径,必须在 add_executeable 前面
include_directories (${include_dir})
# 设置源代码路径
set (source_dir "${PROJECT_SOURCE_DIR}/src/")
# 设置需要编译的源文件
file (GLOB source_files "${source_dir}/*.cpp")
# 设置编译的输出目标文件
add_executable (HelloWorld ${source_files})
# 指定链接库路径,必须在 add_executeable 后面
target_link_libraries (${std_lib_name_LIBRARIES})
  • 其他辅助部分
# 包括参数打印、遍历目录等等

  • 判断控制部分
# 条件判断、函数定义、条件执行等等

CMake常用实例
工程文件目录配置

采用外部编译,首先进入build文件目录,使用cmake命令,然后使用make命令

# 读取并执行顶层cmakelists配置文件
cmake ..
# 直接make读取并编译Makefile文件
make

.
|——build
|——CMakeLists.txt
|——include
|
|——hello.h
|——src
|
|——hello.cpp
|——main.cpp

实例1

在Ubuntu系统中为CodeLite IDE创建工程项目

# 0、前期工具准备
# 更新系统软件源
sudo apt update
# 更新系统的软件
sudo apt upgrade
# 安装vim、g++、cmake、codelite软件工具
sudo apt install vim g++ cmake codelite

# 1、前期文件目录准备
# 创建Dev空文件目录,项目开发顶级目录
mkdir Dev
# 进入Dev文件目录
cd Dev
# 创建HelloWorld空文件目录,项目开发中的模块目录
mkdir HelloWorld
# 进入HelloWorld空文件目录
cd HelloWorld
# 创建src空文件目录,储存模块的源代码目录
mkdir src
# 创建项目的主程序源代码文件
touch src/Main.cpp

# 2、配置CMake的配置文件CMakeLists.txt
vim CMakeLists.txt
# 设置CMake最低要求版本
cmake_minimum_required (VERSION 3.5)
# 设置项目名
project (HelloWorld)
# 设置编译参数
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++11")
# 设置源代码文件目录
set (source_dir "${PROJECT_SOURCE_DIR}/src/")
# 设置需要编译的源文件
file (GLOB source_files "${source_dir}/*.cpp")
# 设置编译的输出目标文件
add_executable (HelloWorld ${source_files})

# 3、生成项目
# 创建脚本自动运行
vim build.sh
# 脚本内容
#!/bin/sh
# 为CodeLite IDE创建项目工程,并自动生成Makefile文件
cmake -G "CodeLite - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug
# 为脚本添加可执行权限
chmod +x build.sh
# 运行shell脚本
./build.sh
# 查看脚本运行结果
ls
# 利用IDE CodeLite 以后台方式打开工程项目
codelite HelloWorld.workspace &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值