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

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 SHAREDlibrary.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.mrgr.cn/news/44202.html

相关文章:

  • Linux基础项目开发1:量产工具——显示系统
  • windows C++-创建基于代理的应用程序(上)
  • C++ 类与对象——超详细入门指南(上篇)
  • 【GeekBand】C++设计模式笔记6_Decorator_装饰模式
  • 【前端】-音乐播放器(源代码和结构讲解,大家可以将自己喜欢的歌曲添加到数据当中,js实现页面动态显示音乐)
  • expressjs,MySQL,实现分页查询接口
  • Vue - 打包部署
  • 如何避免任务延误:从原因到策略的全面解析
  • 18448 最小生成树
  • 使用树莓派搭建音乐服务器
  • AI配音(声音克隆)
  • Windows搭建RTMP服务器
  • 排队打水(贪心)
  • 使用frp将树莓派穿透到外网
  • MySQL 实验 7:索引的操作
  • TypeScript:装饰器
  • springboot文件上传(阿里云oss)
  • 重学SpringBoot3-集成Redis(三)之注解缓存策略设置
  • PPPoE协议个人理解+报文示例+典型配置-RFC2516
  • 制作离线版Koczkatamas工具包