使用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提供的)?
答
替代做法:
- 将文件复制到你的模块目录中,并修改它。
- 致电
find_package(TBB)
在你做任何与CGAL有关的事情之前。 - 使用CMake调用来查找/与CGAL交互。如果幸运的话,所有检查的结果都会被缓存,并且可以正常工作。它依然可能无法工作,具体取决于实际完成的工作。
答
在这种情况下,find_package函数可能太重了,您可以试试像这样包含重定位的.cmake文件。
include(<local path>/FindTBB.cmake)
您可以尝试'设置(CMAKE_MODULE_PATH “ _SOURCE_DIR /路径/到/固定/模块” $ {} CMAKE_MODULE_PATH)' –
Gluttton
无关,但还是:你已经打开了一个问题,对于CGAL?他们可能有兴趣解决这个问题。 – usr1234567