当前位置: 首页 > article >正文

CMake构建工程基本要素

在使用 CMake 构建项目时,CMakeLists.txt 文件是用来定义构建流程的核心文件,通常它需要完成以下设置:

  • 项目基本上配置
  • 预处理相关设置
  • 编译选项设置
  • 连接选项设置
  • 工程部署设置

CMake 最低版本要求: 指定项目需要的 CMake 最低版本。例如:

cmake_minimum_required(VERSION 3.10)

项目名称与版本: 使用 project 命令定义项目的名称及版本:

project(MyProject VERSION 1.0)

编译器标准: 设置需要的编译器标准,特别是 C++ 项目中:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

源文件和头文件: 定义需要编译的源文件和相关的头文件:

#添加可执行程序
add_executable(MyExecutable main.cpp other.cpp)
#添加库
add_library(my_shared_lib SHARED
    library.cpp
)

添加包含路径: 使用 include_directoriestarget_include_directories 来指定头文件路径:

target_include_directories(MyExecutable PRIVATE ${PROJECT_SOURCE_DIR}/include)

外部库依赖: 如果项目依赖于外部库,需要通过 find_packagefind_library 等命令来引入库。例如:

find_package(OpenGL REQUIRED)
target_link_libraries(MyExecutable OpenGL::GL)

库文件链接: 使用 target_link_libraries 链接需要的库:

target_link_libraries(MyExecutable PRIVATE SomeLibrary)

编译选项: 设置编译器选项,如警告级别、优化选项等:

target_compile_options(MyExecutable PRIVATE -Wall -O3)

自定义变量和选项: 可以定义项目所需的变量或配置选项:

option(BUILD_TESTS "Build the tests" ON)

安装规则: 指定项目安装时,文件的目标路径:

install(TARGETS MyExecutable DESTINATION bin)
install(FILES myheader.h DESTINATION include)

条件编译: 通过 if/else 等命令根据条件进行编译设置:

if(WIN32)
  add_definitions(-DWIN32_LEAN_AND_MEAN)
endif()

构建子目录: 对于大型项目,可以通过 add_subdirectory 添加子目录中的 CMakeLists.txt

add_subdirectory(src)
add_subdirectory(test)

http://www.kler.cn/news/335663.html

相关文章:

  • 文本到语音或视频的构想
  • 什么是数字化智能工厂的组成
  • Microsoft Edge 离线安装包制作或获取方法和下载地址分享
  • 从DBA是“擦车的”谈起
  • 【Linux】用虚拟机配置Ubuntu 24.04.1 LTS环境
  • 社群团购中的用户黏性价值:以开源小程序多商户AI智能名片商城源码为例
  • 科技赋能,商贸物流新速度 —— 智慧供应链商城加速企业成长
  • 【瑞昱RTL8763E】音频
  • 40条经典ChatGPT论文指令,圈定选题和进行论文构思
  • 基于阻塞队列及环形队列的生产消费模型
  • 第一集---初识计算机系统
  • 如何利用免费音频剪辑软件制作出精彩音频
  • 使用ElasticSearch-dump工具进行ES数据迁移、备份
  • python 实现贪婪合并排序算法
  • 【MySQL】-- 库的操作
  • 数据结构--集合框架
  • 【React】事件机制
  • 复习HTML(基础)
  • whisper 实现语音识别 ASR - python 实现
  • js 如何平拆嵌套数组