在 CMake 交叉编译中,涉及的工具链变量较多,主要包括 编译器、链接器、二进制工具、系统信息、路径控制 等类别。以下是完整的分类总结:
1. 核心编译器变量(必须配置)
变量名 |
用途说明 |
示例(ARM 交叉编译) |
CMAKE_C_COMPILER |
C 编译器路径 |
arm-linux-gnueabihf-gcc |
CMAKE_CXX_COMPILER |
C++ 编译器路径 |
arm-linux-gnueabihf-g++ |
CMAKE_ASM_COMPILER |
汇编器路径(可选) |
arm-linux-gnueabihf-as |
2. 工具链工具变量(推荐配置)
变量名 |
用途说明 |
示例 |
CMAKE_AR |
静态库归档工具(ar ) |
arm-linux-gnueabihf-ar |
CMAKE_RANLIB |
生成静态库索引(ranlib ) |
arm-linux-gnueabihf-ranlib |
CMAKE_LINKER |
链接器(ld ,非 GCC 时需指定) |
arm-linux-gnueabihf-ld |
CMAKE_NM |
查看符号表(nm ) |
arm-linux-gnueabihf-nm |
CMAKE_OBJCOPY |
二进制转换工具(objcopy ) |
arm-linux-gnueabihf-objcopy |
CMAKE_OBJDUMP |
反汇编工具(objdump ) |
arm-linux-gnueabihf-objdump |
CMAKE_STRIP |
剥离调试符号(strip ) |
arm-linux-gnueabihf-strip |
CMAKE_READELF |
ELF 文件分析工具(readelf ) |
arm-linux-gnueabihf-readelf |
3. 系统与目标平台变量(必须配置)
变量名 |
用途说明 |
示例 |
CMAKE_SYSTEM_NAME |
目标系统名称(如 Linux、Android) |
Linux |
CMAKE_SYSTEM_PROCESSOR |
目标处理器架构(如 ARM、x86_64) |
arm |
CMAKE_SYSTEM_VERSION |
目标系统版本(可选) |
1.0 |
4. 路径与查找控制变量(可选配置)
变量名 |
用途说明 |
CMAKE_FIND_ROOT_PATH |
指定交叉编译的根目录(如 SDK 路径) |
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM |
控制可执行程序的查找方式(NEVER /ONLY ) |
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY |
控制库文件的查找方式 |
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE |
控制头文件的查找方式 |
CMAKE_STAGING_PREFIX |
临时安装路径(用于分阶段构建) |
5. 高级控制变量(特殊场景)
变量名 |
用途说明 |
CMAKE_CROSSCOMPILING |
显式声明当前为交叉编译(通常自动检测) |
CMAKE_<LANG>_FLAGS |
指定编译器标志(如 CMAKE_C_FLAGS ) |
CMAKE_EXE_LINKER_FLAGS |
指定可执行文件的链接标志 |
CMAKE_MODULE_LINKER_FLAGS |
指定动态库的链接标志 |
6. 完整工具链文件示例
# toolchain-arm-linux.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# 编译器路径
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
# 工具链工具
set(CMAKE_AR arm-linux-gnueabihf-ar)
set(CMAKE_RANLIB arm-linux-gnueabihf-ranlib)
set(CMAKE_OBJCOPY arm-linux-gnueabihf-objcopy)
set(CMAKE_OBJDUMP arm-linux-gnueabihf-objdump)
# 查找路径控制
set(CMAKE_FIND_ROOT_PATH /opt/arm-sdk)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
总结
-
必须配置:
CMAKE_C_COMPILER
、CMAKE_CXX_COMPILER
、CMAKE_SYSTEM_NAME
。
-
推荐配置:
CMAKE_AR
、CMAKE_RANLIB
、CMAKE_OBJCOPY
(涉及静态库时需指定)。
-
可选配置:其他工具(如
OBJDUMP
、STRIP
)和路径控制变量。
-
总变量数:约 20-30 个(根据实际需求选择)。
官方文档参考:CMake Toolchain Variables。