我正在使用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)
或类似的东西会很棒。
答案 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)