比如查找libyang代码生成的libyang.a和libyang/libyang.h
find_package是从环境变量${CMAKE_MODULE_PATH}指明的文件路径列表里找FindLibyang.cmake
而FindLibyang.cmake会指明libraries和header files所在的目录。
代码操作如下:
比如CMakeModules/FindLibyang.cmake如下:
include(FindPackageHandleStandardArgs)
if(LIBYANG_LIBRARIES AND LIBYANG_INCLUDE_DIRS)
# in cache already
set(LIBYANG_FOUND TRUE)
else()
find_path(LIBYANG_INCLUDE_DIR
NAMES
libyang/libyang.h
PATHS
/usr/includes
)
find_library(LIBYANG_LIBRARY
NAMES
yang
libyang
PATHS
/usr/lib64
)
set(LIBYANG_INCLUDE_DIRS ${LIBYANG_INCLUDE_DIR})
set(LIBYANG_LIBRARIES ${LIBYANG_LIBRARY})
# handle the QUIETLY and REQUIRED arguments and set SYSREPO_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(LibYANG FOUND_VAR LIBYANG_FOUND
REQUIRED_VARS LIBYANG_LIBRARY LIBYANG_INCLUDE_DIR)
endif()
设置环境变量CMAKE_MODULE_PATH:
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules/")