2013-01-31 104 views
3

我正在使用CMake 2.8.2版本。該項目使用大量的外部文件和自定義庫(通過find_package不可用),並有像下面的一個元素的長級聯:cmake find_path/find_library失敗檢查

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) 

或類似的東西會很好。

回答

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)