cmake命令
1.0、参考
1.1、cmake命令的作用

the command-line interface of the cross-platform buildsystem generator CMake.

1.2、cmake命令的使用格式
cmake -help | --help
cmake -version | --version
cmake [option]... <sourceDIR>
cmake [option]... -S <sourceDIR> -B <buildDIR>
1.2.1、cmake -help | --help

打印出cmake命令的使用帮助。

1.2.2、cmake -version | --version

打印出CMake的版本信息。

1.2.3、cmake [option]... <sourceDIR>

生成某个构建工具配置文件,并调用对应的构建工具进行编译。

sourceDIRCMakeLists.txt配置文件所在的目录。

示例:

cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -G Ninja \
    -Wno-dev \
    -B build \
    src
1.2.4、cmake [option]... -S <sourceDIR> -B <buildDIR>

生成某个构建工具配置文件,并调用对应的构建工具进行编译。

sourceDIRCMakeLists.txt配置文件所在的目录。

buildDIR是用于生成构建工具配置文件以及缓存的目录。该目录如果不指定,cmake生成的产物就与源码混合在一起,这样不清晰。所以一定要设置一个buildDIR

示例:

cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -G Ninja \
    -Wno-dev \
    -S src \
    -B build.d
1.2.5、-G <GENERATOR>

指定生成哪种配置文件

GENERATOR说明
Unix Makefiles生成gmakeMakefile
Ninja生成Ninjabuild.ninja
1.2.6、-D<变量>=<值>

设置变量

CMake内置变量:

变量类型默认值说明
CMAKE_SYSTEM_NAMESTRING$(uname)指定编译后生成的产物运行在什么操作系统
CMAKE_SYSTEM_PROCESSORSTRING$(uname -m)指定编译后生成的产物运行在什么CPU平台
CMAKE_C_COMPILERFILEPATH/usr/bin/cc指定C编译器
CMAKE_C_FLAGSSTRING设置C编译器的参数
CMAKE_CXX_COMPILERFILEPATH/usr/bin/c++指定C++编译器
CMAKE_CXX_FLAGSSTRING设置C++编译器的参数
CMAKE_ASM_COMPILERFILEPATH/usr/bin/as指定汇编器
CMAKE_ASM_FLAGSSTRING设置汇编器的参数
CMAKE_LINKERFILEPATH/usr/bin/ld指定ld
CMAKE_ARFILEPATH/usr/bin/ar指定ar
CMAKE_RANLIBFILEPATH/usr/bin/ranlib指定ranlib
CMAKE_STRIPFILEPATH/usr/bin/strip指定strip
CMAKE_OBJDUMPFILEPATH/usr/bin/objdump指定objdump
CMAKE_OBJCOPYFILEPATH/usr/bin/objcopy指定objcopy
CMAKE_READELFFILEPATH/usr/bin/readelf指定readelf
CMAKE_NMFILEPATH/usr/bin/nm指定nm
CMAKE_ADDR2LINEFILEPATH/usr/bin/addr2line指定addr2line
CMAKE_DLLTOOLFILEPATH/usr/bin/dlltool指定dlltool
CMAKE_TOOLCHAIN_FILEFILEPATH指定公共配置的CMakeLists.txt
CMAKE_VERBOSE_MAKEFILEBOOLOFF是否在生成的Makefile中开启.SILENT指令
CMAKE_COLOR_MAKEFILEBOOLON是否彩色输出Makefile中的执行命令
CMAKE_INSTALL_PREFIXPATH/usr/local/指定安装目录
CMAKE_BUILD_TYPESTRINGDebug
Debug 编译器设置-g参数
Release 编译器设置-O3 -DNDEBUG参数
RelWithDebInfo 编译器设置-O2 -DNDEBUG -g参数
MinSizeRel 编译器设置-Os -DNDEBUG参数