海思Hi3519/Hi3559 SDK编译实战:CMake替代Makefile的完整避坑指南
对于习惯使用CMake的开发者来说,面对海思SDK中复杂的Makefile体系常常感到无从下手。本文将提供一套完整的CMake移植方案,从环境配置到静态库链接,帮助开发者高效构建海思平台项目。
1. 为什么选择CMake替代海思原生Makefile
海思SDK默认提供的Makefile体系存在几个明显痛点:
- 嵌套结构复杂:层层包含的Makefile.param、Makefile.lib等文件增加了理解成本
- 依赖关系隐晦:库文件间的依赖关系难以直观体现
- 扩展性差:添加新模块时需要手动修改多个Makefile文件
- 调试困难:构建过程出错时难以快速定位问题根源
相比之下,CMake具有以下优势:
- 跨平台支持:同一套配置可在不同开发环境中使用
- 清晰的依赖管理:通过target_link_libraries显式声明依赖
- 模块化设计:add_subdirectory支持项目自然分割
- 丰富的工具链:配合CLion等IDE可实现代码跳转和智能提示
2. 交叉编译环境配置
正确的工具链配置是CMake移植的基础。以下是一个完整的toolchain.cmake示例:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# 指定交叉编译器路径
set(CMAKE_C_COMPILER /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc)
set(CMAKE_CXX_COMPILER /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++)
# 设置查找规则
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
<


739

被折叠的 条评论
为什么被折叠?



