本项目提供公共编译脚本、第三方开源软件编译脚本、公共打包与安装框架脚本
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
cmake
🔥 最新动态
- [2026/3] cmake项目首次上线。
概述
cmake 是 CANN(Compute Architecture for Neural Networks)生态中提供公共编译脚本、第三方开源软件编译脚本、公共打包与安装框架脚本的仓库,实现多仓联合编译,统一打包和安装流程。
┌─────────────────────────────────────────────────────────────┐
│ CANN 组件生态 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ runtime │ │ metadef │ │ hcomm │ │ ... │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └─────────────┴──────┬──────┴─────────────┘ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ cmake │ |
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
📂 目录结构
cmake/
├── scripts/ # 脚本目录
│ ├── package/ # 打包相关脚本
│ └── install/ # 安装相关脚本
├── third_party/ # 第三方开源软件编译脚本
├── function/ # 功能模块目录
├── intf_pub/ # 公共目录
├── superbuild/ # 集成工程目录
├── toolchain/ # 工具链目录
└── README.md # 项目说明文档
快速开始
重要说明:本仓库是 CANN 组件的配套构建脚本,不能独立使用,需要与 CANN 下的其它组件(如 runtime、ops-transformer 等)配套使用。
在 CANN 其它组件中引入本仓库的方法如下:
-
创建 cmake/fetch_cann_cmake.cmake 文件
粘贴以下代码。
if(NOT PROJECT_SOURCE_DIR) set(CANN_CMAKE_TAG "master-025") if(CANN_3RD_LIB_PATH AND IS_DIRECTORY "${CANN_3RD_LIB_PATH}/cann-cmake") include("${CANN_3RD_LIB_PATH}/cann-cmake/function/prepare.cmake") else() include(FetchContent) if(CANN_3RD_LIB_PATH AND EXISTS "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz") FetchContent_Declare( cann-cmake URL "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz" URL_HASH SHA256=1e8888249828083f059bdc9614ce09cdaefac8a682defe18b73b83cd45bde213 ) else() FetchContent_Declare( cann-cmake GIT_REPOSITORY https://gitcode.com/cann/cmake.git GIT_TAG ${CANN_CMAKE_TAG} GIT_SHALLOW TRUE ) endif() FetchContent_GetProperties(cann-cmake) if(NOT cann-cmake_POPULATED) FetchContent_Populate(cann-cmake) endif() include("${cann-cmake_SOURCE_DIR}/function/prepare.cmake") endif() endif() -
添加 include(cmake/fetch_cann_cmake.cmake) 命令
在根目录的 CMakeLists.txt 中,cmake_minimum_required 命令之后,project 命令之前,添加
include(cmake/fetch_cann_cmake.cmake)。 -
添加 init_cann_project() 命令
初始化 cmake 工程。init_cann_project 中会执行一些初始化操作,设置公共参数等。
cmake_minimum_required(VERSION 3.16) include(cmake/fetch_cann_cmake.cmake) project(runtime) init_cann_project()