CMake find_library не находит библиотеку
Я придумал следующий очень простой скрипт FindMAGMA.cmake, чтобы найти библиотеку MAGMA, учитывая, что ее нет:
# - Find the MAGMA library
#
# Usage:
# find_package(MAGMA [REQUIRED] [QUIET] )
#
# It sets the following variables:
# MAGMA_FOUND ... true if magma is found on the system
# MAGMA_LIBRARY_DIRS ... full path to magma library
# MAGMA_INCLUDE_DIRS ... magma include directory
# MAGMA_LIBRARIES ... magma libraries
#
# The following variables will be checked by the function
# MAGMA_USE_STATIC_LIBS ... if true, only static libraries are found
# MAGMA_ROOT ... if set, the libraries are exclusively searched
# under this path
#If environment variable MAGMA_ROOT is specified, it has same effect as MAGMA_ROOT
if( NOT MAGMA_ROOT AND NOT $ENV{MAGMA_ROOT} STREQUAL "" )
set( MAGMA_ROOT $ENV{MAGMA_ROOT} )
# set library directories
set(MAGMA_LIBRARY_DIRS ${MAGMA_ROOT}/lib)
# set include directories
set(MAGMA_INCLUDE_DIRS ${MAGMA_ROOT}/include)
# set libraries
find_library(
MAGMA_LIBRARIES
NAMES "libmagma"
PATHS ${MAGMA_ROOT}
PATH_SUFFIXES "lib"
NO_DEFAULT_PATH
)
set(MAGMA_FOUND TRUE)
else()
set(MAGMA_FOUND FALSE)
endif()
Получить пути include и lib просто. Тем не менее, он не находит файл "libmagma.a" в Ubuntu или "libmagma.dylib" в Mac OS X, если я не включу расширение, но это противоречит цели, не так ли? Кто-нибудь может посоветовать, пожалуйста, что я здесь делаю не так?
1 ответ
Решение
Удалить ведущий lib
из названия библиотеки
find_library(
MAGMA_LIBRARIES
NAMES magma
PATHS ${MAGMA_ROOT}
PATH_SUFFIXES lib
NO_DEFAULT_PATH
)
Кроме того, взгляните на FindPackageHandleStandardArgs
который может помочь вам избавиться от некоторого стандартного кода, который обычно требуется в скриптах поиска.