CMake 简记

默认分类 · 2024-12-03 · 34 人浏览
  • 编写 CMakeLists.txt 文件 名称固定
  • 注释 #
  • 使用 ${} 使用变量的值
  • 定义和赋值变量 set(var val)
  • clion 生成的cmake 文件

    cmake_minimum_required(VERSION 3.27) # 需要的cmake最低版本
    project(Proj) # 项目名称
    
    set(CMAKE_CXX_STANDARD 17) # set 函数, 设置变量的值, CMAKE_CXX_STANDARD 是使用的 c++ 标准
    
    add_executable(Proj main.cpp) #  使用指定的源文件来生成目标可执行文件, 第一个参数为 target
    

    常用命令

  • set 设置变量的值
  • add_library
    类似 add_executable , 只不过他来生成库文件
    示例 add_library(proj add.cpp)
  • aux_source_directory
    在 add_executable 或者 add_library 一个个文件添加确实可以,但是不太优雅,使用这个命令可以自动识别源文件保存到一个变量中
    示例 aux_source_directory(. SRC_LIST) 识别当前目录下的源文件,保存在 SRC_LIST 这个变量中, 使用这个变量只需要这样 add_executable(Proj ${SRC_LIST})
  • include_directories
    为该位置之后的 target 添加头文件搜索路径
    示例 include_directories(./includes) 添加./includes 文件夹为头文件搜索路径, 这个命令可以调用多次
  • target_include_directories
    为特定的目标指定头文件搜索路径
    示例 target_include_directories(Proj PUBLIC ./includes) 给add_executable 或 add_library 的target 添加头文件 要放在 add_executable 或 add_library 后边
  • target_link_libraries
    为特定的目标指定链接时依赖的库文件
    示例 target_link_libraries(Proj muduo_net muduo_base mysqlclient hiredis pthread)
    位置同 target_include_directories, 要在 add_executable 或 add_library 后边
  • add_compile_options
    添加编译参数
    示例 add_compile_options( -fno-elide-constructors -Wall)
  • find_library
    查找库
    示例 find_library(MY_LIB mylib ./lib) 作用是去./lib文件夹 查找名为 mylib的库, 存储到MY_LIB 这个变量中
  • message
    打印, 可以用来打印变量的值
    示例 message(STATUS hello) STATUS 表示是一般的状态信息, 还可以是 WARNING 等

    常用内置变量

  • PROJECT_SOURCE _DIR 工程顶层目录
  • CMAKE_CURRENT_SOURCE_DIR 当前cmake文件所在的目录
  • EXECUTABLE_OUTPUT_PATH 和 LIBRARY_OUTPUT_PATH 可执行文件和库文件的输出路径
  • PROJECT_NAME 项目名称, 由 project 指令确定
  • CMAKE_CXX_FLAGS c++ 编译选项
Theme Jasmine by Kent Liao