3

我正在使用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)

或类似的东西会很棒。

4

2 回答 2

6

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

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

find_package(XXX REQUIRED)
于 2013-01-31T12:55:07.043 回答
1

您可能想要使用函数

于 2013-01-31T12:45:31.153 回答