CMake学习笔记

第1章 cmake的基础命令

 1.1 基础命令

cmake -S -B

  • -S:指定源码目录(CMakeLists.txt所在目录)。
  • -B:指定构建目录(即输出目录)。

1.2 指定编译器和编译选项

-DCMAKE_C_COMPILER=

  • 设置C语言编译器的路径。

-DCMAKE_CXX_COMPILER=

  • 设置C++编译器的路径。

-DCMAKE_C_FLAGS="-g"

  • 设置C语言编译标志(例如调试信息)。

-DCMAKE_CXX_FLAGS="-g"

  • 设置C++编译标志(例如调试信息)。

1.3 选择构建类型

-DCMAKE_BUILD_TYPE=Debug|Release|RelWithDebInfo|MinSizeRel

  • 指定构建类型,默认情况下可能是 None 或者 Release。常见的值包括:
    • MinSizeRel: 尽量减少二进制大小。
    • RelWithDebInfo: 类似于 Release,但启用调试信息。
    • Release: 启用优化,禁用调试信息。
    • Debug: 启用调试信息,禁用优化。

1.4 指定生成器

-G "Unix Makefiles"

  • 指定使用Unix Makefiles作为生成器。

-G "Ninja"

  • 使用Ninja作为构建系统。

-G "Visual Studio 16 2019"

  • 在Windows上生成Visual Studio 2019项目文件。

1.5 安装前缀

-DCMAKE_INSTALL_PREFIX=

  • 设置安装路径前缀(默认为 /usr/local 或 C:/Program Files/ 等)。

1.6 查找库和头文件

-DCMAKE_PREFIX_PATH=

  • 指定额外的搜索路径以查找依赖库或头文件。

1.8 指定目标系统的操作系统名称

-DCMAKE_SYSTEM_NAME=Linux

  • 作用:指定目标系统的操作系统名称。
  • 典型值LinuxWindowsAndroidGeneric 等。
  • 意义:告诉 CMake 当前不是在本地构建,而是为另一个系统(如嵌入式设备)构建程序。

1.9 指定目标系统的处理器架构

-DCMAKE_SYSTEM_PROCESSOR=aarch64

  • 作用:指定目标系统的处理器架构。
  • 常见值aarch64armx86_64i686mipsriscv64 等。
  • 意义:配合 CMAKE_SYSTEM_NAME 使用,帮助选择正确的编译器标志和库路径

1.10 使用示例

cmake -S src -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++

第2章 命令行参数和配置文件的区别

命令行参数 CMakeLists.txt 设置方式 说明
-DCMAKE_BUILD_TYPE=Debug set(CMAKE_BUILD_TYPE Debug) 设置构建类型(Debug/Release 等)
-DCMAKE_C_COMPILER=gcc set(CMAKE_C_COMPILER gcc) 设置C编译器
-DCMAKE_CXX_COMPILER=g++ set(CMAKE_CXX_COMPILER g++) 设置C++编译器
-DCMAKE_INSTALL_PREFIX=/usr set(CMAKE_INSTALL_PREFIX "/usr") 设置安装路径前缀
-DCMAKE_PREFIX_PATH=/opt/mylib set(CMAKE_PREFIX_PATH "/opt/mylib") 指定额外依赖库搜索路径
-DCMAKE_C_FLAGS="-g" set(CMAKE_C_FLAGS "-g") 设置C编译标志
-DCMAKE_CXX_FLAGS="-g" set(CMAKE_CXX_FLAGS "-g") 设置C++编译标志
-G "Unix Makefiles" 不可在 CMakeLists.txt 中设置 指定生成器(Generator)

-DCMAKE_SYSTEM_NAME=Linux

set(CMAKE_SYSTEM_NAME Linux) 指定目标系统的操作系统名称

-DCMAKE_SYSTEM_PROCESSOR=aarch64

set(CMAKE_SYSTEM_PROCESSOR aarch64) 指定目标系统的处理器架构

 

你可能感兴趣的:(学习,笔记,c++)