rapids_cpm_package_override

在版本 v21.10.00 中添加。

覆盖项目的 rapids_cpm_find()rapids_cpm_*CPMFetchContent() 包信息。

rapids_cpm_package_override(<json_file_path>)

允许项目覆盖任何 rapids_cpm_find()rapids_cpm_*CPMFetchContent() 包的默认值。

用户提供的 json 文件必须遵循 versions.json 格式,此格式已在 此处说明 并在下面的示例中展示

{
  "packages": {
    "Thrust": {
      "version": "1.12.0",
      "git_url": "https://github.com/NVIDIA/thrust.git",
      "git_tag": "${version}",
      "git_shallow": true,
      "always_download": true,
      "exclude_from_all": false
    }
  }
}

默认情况下,当为项目提供了覆盖时,将不会对该项目进行本地搜索。这样做是为了确保使用请求的修改版本。

如果一个项目列在多个覆盖文件中,则将使用第一个文件中的值,并且对该包的所有后续调用都将被忽略。这种“先记录者胜”的方法用于匹配 FetchContent,并允许父项目覆盖子项目。

在版本 v24.06.00 中添加。

如果指定了变量 RAPIDS_CMAKE_CPM_OVERRIDE_VERSION_FILE,无论参数如何,它都将在所有对 rapids_cpm_init 的调用中使用。任何现有的 rapids_cpm_init(OVERRIDE 文件将被忽略,所有其他调用都将被视为指定了此文件作为覆盖。

注意

在版本 v25.04.00 中添加:当变量 CPM_<package_name>_SOURCE 存在时,对 package_name 的任何覆盖条目都将被解析但被忽略。

对于 v23.10 和 v25.02 之间的版本(包含两端),变量 CPM_<package_name>_SOURCE 将导致对 package_name 的任何覆盖条目被忽略且不被解析。

注意

如果覆盖文件未指定值或包条目,则将使用默认版本。

必须在任何调用 rapids_cpm_find() 之前调用。