
Cmake的使用
自动搜索依赖:CMake能够自动识别项目所需的库和头文件,并在搜索过程中考虑环境变量和注册表(在Windows平台)。 构建目录与源码目录分离:允许在源码目录之外单独创建构建目录,用于存放编译生成的中间文件。 灵活的配置选项:在配置阶段可以选择需要包含的组件,并灵活切换静态库与共享库的构建方式。 自动生成依赖关系:CMake能够自动识别项目依赖,并支持大多数平台的并行构建。 生成构建文件:使用 执行编译:根据生成的Makefile文件使用 基本配置: 打印信息: 编译文件: 文件搜索与包含: 依赖库管理: 构建目录设置: 编译选项: 预定义变量: 环境变量: 系统信息: 主要开关选项:
发布日期:2021-05-15 08:56:44
浏览次数:25
分类:精选文章
本文共 1992 字,大约阅读时间需要 6 分钟。
CMake是一款跨平台的安装与编译工具,通过简单的语句可以描述多平台的安装与编译过程。它能够自动生成标准的构建文件(如Unix的Makefile或Windows的Visual Studio项目文件),并根据编译器支持的特性测试C++语言的各项功能。CMake的特点在于其配置文件CMakeLists.txt的统一管理,能够支持多种编译环境下的构建需求。
CMake的优点
CMake的编译流程
CMake的编译过程通常分为两个步骤:
cmake
命令指向CMakeLists.txt文件,通常建议在新建的目录中执行,避免污染源码目录。 mkdir buildcd buildcmake ..
make
命令进行编译。 make
CMakeLists.txt文件编写指南
cmake_minimum_required(VERSION 3.4.1)project(demo)
message("项目名称: ${PROJECT_NAME}")message("项目目录: ${PROJECT_SOURCE_DIR}")message(WARNING "注意:这是一个警告信息")message(FATAL_ERROR "构建失败!")
add_executable(demo demo.cpp)add_library(demo STATIC util.cpp)add_library(demo SHARED util.cpp)
file(GLOB SRC_LIST "*.cpp" "protocol/*.cpp")add_library(demo ${SRC_LIST})
find_library(logLib log)target_link_libraries(demo ${logLib})
include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}")link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs)
set(CMAKE_C_FLAGS_DEBUG "-g -Wall")set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall")
常用CMake变量
PROJECT_SOURCE_DIR
:项目根目录PROJECT_BINARY_DIR
:当前CMake处理目录CMAKE_CURRENT_SOURCE_DIR
:当前CMakeLists.txt所在目录CMAKE_CURRENT_BINARY_DIR
:目标编译目录
$ENV{PATH} = "${CMAKE_CURRENT_BINARY_DIR}"
CMAKE_SYSTEM
:系统名称(如Linux)CMAKE_CXX
:C++编译器命令
BUILD_SHARED_LIBS
:控制库类型,默认静态库CMAKE_CXX_FLAGS
:C++编译选项
示例应用
if(${USER_TARGET_OS} STREQUAL "qnx") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14 -Wall -DHAS_SOMEIP_BINDING")elseif(${USER_TARGET_OS} STREQUAL "linux") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14 -pthread -Wall -DHAS_SOMEIP_BINDING")endif()
通过合理配置CMakeLists.txt文件,开发者可以充分利用CMake的优势,简化跨平台构建流程,提升开发效率。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月21日 07时40分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringBoot使用@Email报错误
2019-03-13
SpringBoot之国际化
2019-03-13
Redis.conf
2019-03-13
Maven 输入依赖名字不提示
2019-03-13
Rabbitmq的内存磁盘监控
2019-03-13
访问servlet时弹出文件下载框解决方法
2019-03-13
IDEA中同时push项目到gitee和github
2019-03-13
IDEA打war包部署在云服务器访问
2019-03-13
关于Form表单中action参数传值的问题
2019-03-13
tinyproxy正向代理
2019-03-13
codeforces 59A-C语言解题报告
2019-03-13
Fast Matrix Calculation HDU-4965 矩阵快速幂
2019-03-13
An Easy Physics Problem HDU-5572 计算几何
2019-03-13
OpenCv 金字塔之上采样与下采样
2019-03-13
华为手机麦芒9参数配置
2019-03-13
Java中的注释
2019-03-13
Java接口(interface)
2019-03-13
Linux+Nginx+Asp.net Core及守护进程部署
2019-03-13
Spring框架概述
2019-03-13
控件的三种模式及Image View控件2021-04-08
2019-03-13