RAPIDS-CMake 基础知识

安装

rapids-cmake模块旨在在项目配置阶段获取。下载RAPIDS.cmake脚本,该脚本负责通过 CMake 的FetchContent获取模块的其余内容。

cmake_minimum_required(...)

if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/<PROJ>_RAPIDS.cmake)
  file(DOWNLOAD https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-25.04/RAPIDS.cmake
    ${CMAKE_CURRENT_BINARY_DIR}/<PROJ>_RAPIDS.cmake)
endif()
include(${CMAKE_CURRENT_BINARY_DIR}/<PROJ>_RAPIDS.cmake)
include(rapids-cmake)
include(rapids-cpm)
include(rapids-cuda)
include(rapids-export)
include(rapids-find)

project(...)

用法

rapids-cmake旨在让项目仅使用其所需的功能子集。为此,rapids-cmake包括以下主要组件

项目使用rapids-cmake函数有两种方式。

  1. 调用include(rapids-<component>),这将导入该组件常用的函数。

  2. 通过include(${rapids-cmake-dir}/<component>/<function_name>.cmake)独立加载每个函数。

覆盖 RAPIDS.cmake

有时项目或开发者需要验证rapids-cmake分支。为此,您可以设置变量来控制RAPIDS.cmake下载哪个仓库,方法如下

# To override the version that is pulled:
set(rapids-cmake-version "<version>")

# To override the GitHub repository:
set(rapids-cmake-repo "<my_fork>")

# To use an exact Git SHA:
set(rapids-cmake-sha "<my_git_sha>")

# To use a Git tag:
set(rapids-cmake-tag "<my_git_tag>")

# To override the repository branch:
set(rapids-cmake-branch "<my_feature_branch>")

# Or to override the entire repository URL (e.g. to use a GitLab repo):
set(rapids-cmake-url "https://gitlab.com/<my_user>/<my_fork>/-/archive/<my_branch>/<my_fork>-<my_branch>.zip")

# To override the usage of fetching the repository without git info
# This only works when specifying
#
# set(rapids-cmake-fetch-via-git "ON")
# set(rapids-cmake-branch "branch-<cal_ver>")
#
# or
# set(rapids-cmake-fetch-via-git "ON")
# set(rapids-cmake-url "https://gitlab.com/<my_user>/<private_fork>/")
# set(rapids-cmake-sha "ABC123")
#
set(rapids-cmake-fetch-via-git "ON")

file(DOWNLOAD https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-25.04/RAPIDS.cmake
    ${CMAKE_CURRENT_BINARY_DIR}/RAPIDS.cmake)
include(${CMAKE_CURRENT_BINARY_DIR}/RAPIDS.cmake)

几点说明

  • 显式定义的rapids-cmake-url将始终被使用

  • rapids-cmake-sha优先于rapids-cmake-tag

  • rapids-cmake-tag优先于rapids-cmake-branch

  • 建议始终将rapids-cmake-version设置为您修改将拉取的仓库所期望的版本

人们尝试的一种错误方法是修改file(DOWNLOAD)行以指向自定义的rapids-cmake分支。这不起作用,因为下载的RAPIDS.cmake中包含了要克隆的 rapids-cmake 仓库的版本信息。