Чтобы понять, как связывать библиотеки, кто-то советует мне взглянуть на пример findALSA:
find_path(ALSA_INCLUDE_DIR NAMES asoundlib.h
PATH_SUFFIXES alsa
DOC "The ALSA (asound) include directory"
)
find_library(ALSA_LIBRARY NAMES asound
DOC "The ALSA (asound) library"
)
# handle the QUIETLY and REQUIRED arguments and set ALSA_FOUND to TRUE if
# all listed variables are TRUE
include("${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake")
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA DEFAULT_MSG ALSA_LIBRARY ALSA_INCLUDE_DIR)
if(ALSA_FOUND)
set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
endif()
mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
Что я не понимаю, так это:
if(ALSA_FOUND)
set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
endif()
Вопрос 1: Это потому, что ${ALSA_LIBRARY}
и ${ALSA_INCLUDE_DIR}
могут указывать только на один файл / один каталог?
Вопрос 2. Может ли кто-нибудь показать мне, как переписать пример, если я хочу связать 2 включаемых каталога и 2 библиотечных файла?
Допустим, у нас есть следующий пример:
/alsa/dir1/asound1.h
/alsa/dir2/asound2.h
/alsa/lib/libasound1.a
/alsa/lib/libasound2.a
Вопрос 3: в частности, что становится командой FIND_PACKAGE_HANDLE_STANDARD_ARGS?
Большое спасибо