rapids_cpm_init
在 v21.06.00 版本中添加。
为项目建立 CPM 和预设包基础设施。
rapids_cpm_init( [CUSTOM_DEFAULT_VERSION_FILE <json_default_file_path>]
[OVERRIDE <json_override_file_path>]
[GENERATE_PINNED_VERSIONS]
)
将根据 CPM_SOURCE_CACHE
和 ENV{CPM_SOURCE_CACHE}
的状态下载 CPM 模块。这允许多个嵌套项目共享 CPM 的同一份下载。如果未设置这些变量,文件将被缓存到调用项目的构建树中。
在 v24.06.00 版本中添加:` CUSTOM_DEFAULT_VERSION_FILE `
这是一个高级选项,允许项目指定一个自定义的默认 versions.json
文件,该文件将代替 rapids-cmake 内部打包的文件使用。由于这允许您指定一个新的默认 versions.json
,它必须包含项目使用的所有内置 rapids-cmake 包(cccl、fmt、rmm 等)的信息。
在自定义默认版本文件中没有显式条目而使用内置 rapids-cmake 包的行为是未定义的。
如果多次调用 rapids_cpm_init
时使用了不同的默认版本文件,每个版本文件都会被加载。如果一个项目在多个默认版本文件中列出,则使用第一个文件中的值,并忽略该包的所有后续调用。这种“先记录者胜”的方法与 FetchContent
匹配,并允许父项目覆盖子项目。
提供的 json 文件必须遵循 versions.json
格式,该格式在此处记录。
如果指定了变量 RAPIDS_CMAKE_CPM_DEFAULT_VERSION_FILE
,它将用于所有对 rapids_cpm_init
的调用,而不是任何显式的 CUSTOM_DEFAULT_VERSION_FILE 文件,或使用 rapids-cmake 默认的 version.json 文件。
在 v21.10.00 版本中添加:OVERRIDE
允许项目覆盖任何 rapids_cpm_find()
、rapids_cpm_*、CPM 和 FetchContent()
包的默认值。通过为项目提供一个包含额外 `CPM` 预设包信息的辅助文件。
如果多次调用 rapids_cpm_init
时使用了不同的 OVERRIDE
文件,每个版本文件都会被加载。如果一个项目在多个覆盖文件中列出,则使用第一个文件中的值,并忽略该包的所有后续调用。这种“先记录者胜”的方法与 FetchContent
匹配,并允许父项目覆盖子项目。
提供的 json 文件必须遵循 versions.json 格式,该格式在此处记录。
如果覆盖文件未指定值或包条目,将使用默认版本。
在 v24.06.00 版本中添加。
如果指定了变量 RAPIDS_CMAKE_CPM_OVERRIDE_VERSION_FILE
,它将用于所有对 rapids_cpm_init
的调用,无论参数如何。任何现有的 rapids_cpm_init(OVERRIDE
文件将被忽略,所有其他调用将被视为指定了该文件作为覆盖文件。
在 v24.04.00 版本中添加:` GENERATE_PINNED_VERSIONS `
生成一个包含所有 CPM 依赖项及其锁定版本值的 json 文件。这允许使用完全相同的状态进行可重现的构建。锁定文件将位于 <CMAKE_BINARY_DIR>/rapids-cmake/pinned_versions.json
在 v24.06.00 版本中添加。
如果变量 RAPIDS_CMAKE_CPM_PINNED_VERSIONS_FILE
存在,则对 rapids_cpm_init
的所有调用将被视为请求生成锁定版本文件。除了任何现有的显式 GENERATE_PINNED_VERSIONS 文件外,变量 RAPIDS_CMAKE_CPM_PINNED_VERSIONS_FILE
中包含的文件路径将用作写入 pinned_versions.json 内容的目标位置。
注意
必须在调用任何 rapids_cpm_find()
之前调用。