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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值