
公共 API 参考function/prepare.cmake中定义的函数是框架的公共 API被 CANN 组件仓的 CMakeLists.txt 调用。修改签名或行为是跨仓破坏性变更。初始化init_cann_project([PRODUCT_SIDE host|device] [PREPEND_MODULE_PATH])初始化工程设置 C17、ccache、安装路径变量、模块路径等。有幂等保护联合构建时多次调用只在首次生效。参数说明PRODUCT_SIDEhost或device影响 ABI 和源码目录PREPEND_MODULE_PATH将modules/加入CMAKE_MODULE_PATH调用时机project()之后。包与版本声明set_cann_package(name VERSION version)声明包名和版本号。必须在其它set_cann_*函数之前调用。set_cann_package(runtime VERSION 8.0.0)set_cann_build_dependencies(pkg_name depend)声明构建依赖。depend为版本约束字符串支持///前缀省略则按精确匹配CUR_MAJOR_MINOR_VER会被替换为当前包的主次版本号。set_cann_build_dependencies(runtime CUR_MAJOR_MINOR_VER)set_cann_run_dependencies(pkg_name depend)声明运行依赖。同时影响打包时的 deb/rpm 依赖信息。check_cann_pkg_build_deps(pkg_name)检查构建依赖是否满足。调用scripts/version/check_build_dependencies.py。仅TOPLEVEL_PROJECT ON时生效。Device 构建add_cann_device_project(component)注册 device 侧构建工程。通过 ExternalProject 启动独立 CMake 进程引入${CMAKE_SOURCE_DIR}/cmake/device/下的 CMakeLists.txt使用aarch64-hcc-toolchain.cmake交叉编译。行为条件说明TOPLEVEL_PROJECT OFF直接返回多仓联编时由 superbuild 统一管理 device 构建ENABLE_BUILD_DEVICE为FALSE直接返回跳过 device 编译仅子仓独立构建时调用。多仓联编时 device 构建由superbuild/CMakeLists.txt通过 ExternalProject 直接处理不经过此函数。打包配置set_cann_cpack_config(component [options...])配置 CPack 打包参数。仅TOPLEVEL_PROJECT ON或ENABLE_UNIFIED_BUILD时生效。选项说明NO_COMPONENT_INSTALL不带--component参数安装NO_CLEAN不清理临时文件TGZ生成 TGZ 包而非 makeself/run 包ENABLE_DEVICE是否解压device-component.tar.gzPACKAGE_TYPE包类型run/rpm/debCOMPUTE_UNIT芯片型号SHARE_INFO_NAMEshare/info 目录下的名称与 component 不一致时使用OUTPUT输出路径ARCHIVE_FILE_NAME归档文件名set_cann_subprj_package([SUPERBUILD])子工程打包。SUPERBUILD模式将所有指定包统一打包为 TGZ。cann_pack_targets_and_files(OUTPUT path OUTPUT_TARGET name [TARGETS ...] [FILES ...] [options...])打包目标文件和普通文件为 tar.gz。选项说明OUTPUT输出文件路径必选OUTPUT_TARGET输出目标名必选TARGETS要打包的构建目标列表FILES要打包的文件列表MANIFESTmanifest 文件名相对路径TAR_ROOT_DIRtar 包内根目录名SIZE_LIMIT大小限制KBRelease 模式下超出则报错GEN_INI自动生成 .ini 文件第三方依赖add_cann_third_party(name)引入third_party/name.cmake脚本。仅TOPLEVEL_PROJECT ON或ENABLE_UNIFIED_BUILD时生效。add_cann_third_party(boost)find_cann_package(name ...)find_package的包装。独立构建时正常调用find_package。多仓联编时的行为参见 superbuild/internals.md。目标操作clone_cann_target(ORIGIN target OUTPUT target [IGNORE_PROP ...])克隆 target 的属性到新 target。可跳过指定属性。参数说明ORIGIN源 target必选OUTPUT新 target 名必选IGNORE_PROP要跳过不克隆的属性列表取值见下表IGNORE_PROP可识别的属性属性值说明SOURCES源文件INCLUDE_DIRECTORIES头文件搜索目录LINK_LIBRARIES链接库LINK_DIRECTORIES链接库搜索目录COMPILE_DEFINITIONS编译宏定义COMPILE_OPTIONS编译选项LINK_OPTIONS链接选项clone_cann_target(ORIGIN ccl_kernel OUTPUT aicpu_custom IGNORE_PROP LINK_LIBRARIES)generate_cann_stub_library(name [OUTPUT_NAME name])生成打桩库空实现的共享库用于链接时符号解析。add_cann_subdirectories_relative(base_dir dir...)通过相对父目录方式添加子目录。版本信息gen_cann_version_header(pkg_name [VERSION ver] [component])生成版本号头文件${CMAKE_BINARY_DIR}/include/version/pkg_version.h并安装到arch-linux/include/version/。add_cann_version_info_targets()为每个已声明的包生成version.pkg.info文件的自定义目标。签名add_cann_sign_file(INPUT path CONFIG path RESULT_VAR var [options...])添加代码签名步骤。参数说明INPUT待签名文件必选CONFIG签名配置文件必选RESULT_VAR接收签名后文件路径的变量必选OUTPUT_TARGET自定义目标名SCRIPT_ARGS签名脚本额外参数DEPENDS额外依赖签名脚本通过CUSTOM_SIGN_SCRIPT或ENABLE_SIGN控制。【免费下载链接】cmake本项目提供公共编译脚本、第三方开源软件编译脚本、公共打包与安装框架脚本项目地址: https://gitcode.com/cann/cmake创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考