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 который может помочь вам избавиться от некоторого стандартного кода, который обычно требуется в скриптах поиска.

Другие вопросы по тегам