【问题标题】:Use CMake find_package with a custom, bugfixed file将 CMake find_package 与自定义的错误修复文件一起使用
【发布时间】:2026-02-11 18:55:01
【问题描述】:

我有一个库(即 CGAL)。它为未随附的第三方库 CGAL(即 Intel TBB)提供 FindMODULE.cmake 文件。不幸的是,这个文件有一个我需要修复的错误。 (该错误似乎与不兼容的目录结构有关,但这不是重点。)

所以我项目的CMakeLists.txt有一行:

find_package( TBB )

这将调用 CGAL 目录结构中提供的 FindTBB.cmake。

现在,我需要修复 FindTBB.cmake 中的一个错误。我只想复制该文件并将固定版本直接放入我的项目目录中。

在调用find_package时,如何告诉CMake在我的项目目录中使用FindTBB.cmake(而不是CGAL提供的那个)?

【问题讨论】:

  • 你可以试试set (CMAKE_MODULE_PATH "<your_project_name>_SOURCE_DIR/path/to/fixed/module" ${CMAKE_MODULE_PATH})
  • 不相关,但仍然:您是否为 CGAL 打开了问题?他们可能有兴趣解决问题。

标签: cmake cgal tbb


【解决方案1】:

替代方法:

  1. 将文件复制到您的模块目录并进行修改。
  2. 在您做任何与 CGAL 相关的事情之前,请致电 find_package(TBB)
  3. 使用 CMake 调用来查找/与 CGAL 交互。如果幸运的话,所有检查的结果都会被缓存并且可以正常工作。它仍然可能不起作用,具体取决于实际执行的操作。

【讨论】:

    【解决方案2】:

    在这种情况下 find_package 函数可能过于繁重,您可以尝试像这样包含重定位的 .cmake 文件。

    include(<local path>/FindTBB.cmake)
    

    【讨论】:

      最近更新 更多