cmake find_path / find_library检查失败

时间:2013-01-31 11:40:27

标签: find cmake

我正在使用CMake 2.8.2版本。该项目使用了大量外部文件和自定义库(通过find_package不可用),并且有一长串的元素如下所示:

find_path(XXX_INCLUDE_DIR XXX.h /XXX/include)
if (XXX_INCLUDE_DIR)
  message(STATUS "Includes (XXX) found in ${XXX_INCLUDE_DIR}")
else()
  message(FATAL_ERROR "Includes (XXX) not found")
endif()

脚本中有20多个这样的东西 - 它看起来不太好。根据文档,不幸的是,find_path和find_library都没有一个REQUIRED选项可以在这里完成工作(就像它与find_package一样 - 如果没有找到,脚本会停止)。您是否知道如何缩短CMake脚本代码?像

这样的东西
find_path(XXX_INCLUDE_DIR XXX.h /XXX/include REQUIED)

或类似的东西会很棒。

2 个答案:

答案 0 :(得分:6)

将它们放入您的自定义FindXXX.cmake模块中。阅读docs并查看FindPNG.cmake以获取示例。将它们放入<project>/cmake/FindXXX.cmake(或类似),然后将包含这些文件的目录添加到CMAKE_MODULE_PATH并使用find_package(),例如

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

find_package(XXX REQUIRED)

答案 1 :(得分:1)

您可能想要使用macrofunction