使用CMake find_package与自定义,错误文件

问题描述:

我有一个库(即CGAL)。它为没有与CGAL一起发货的第三方库(即Intel TBB)提供FindMODULE.cmake文件。不幸的是,这个文件有一个我需要修复的错误。 (这个bug似乎与不兼容目录结构,但在这里,这不是问题的关键。)使用CMake find_package与自定义,错误文件

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

find_package(TBB) 

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

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

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

+2

您可以尝试'设置(CMAKE_MODULE_PATH “ _SOURCE_DIR /路径/到/固定/模块” $ {} CMAKE_MODULE_PATH)' – Gluttton

+0

无关,但还是:你已经打开了一个问题,对于CGAL?他们可能有兴趣解决这个问题。 – usr1234567

替代做法:

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

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

include(<local path>/FindTBB.cmake)