我在用着CMake 2.8.2 http://www.cmake.org/Wiki/CMake_2.8.2_Docs版本。该项目使用大量外部文件和自定义库(无法通过 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)
或者类似的东西会很棒。
将它们放入您的自定义 FindXXX.cmake 模块中。阅读docs http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/readme.txt看看FindPNG.cmake http://cmake.org/gitweb?p=cmake.git;a=blob;f=Modules/FindPNG.cmake举个例子。将它们放入<project>/cmake/FindXXX.cmake
(或类似),然后将包含这些文件的目录添加到CMAKE_MODULE_PATH
并使用find_package()
, e.g.
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
find_package(XXX REQUIRED)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)