2013-07-19 3 views
3

я придумал следующий супер простой FindMAGMA.cmake скрипт, чтобы найти библиотеку МАГМЫ данную нет ни вокруг:CMake find_library не находит библиотеку

# - 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() 

Getting включаемой и Lib пути прост. Однако он не находит файл «libmagma.a» в Ubuntu или «libmagma.dylib» в Mac OS X, если я не включу расширение, но это победит цель, не так ли? Кто-нибудь может посоветовать, что я здесь делаю неправильно?

ответ

4

Снимите ведущую lib из библиотеки имени

find_library(
    MAGMA_LIBRARIES 
    NAMES magma 
    PATHS ${MAGMA_ROOT} 
    PATH_SUFFIXES lib 
    NO_DEFAULT_PATH 
) 

Кроме того, обратите внимание на FindPackageHandleStandardArgs, которые могут помочь вам избавиться от какого-то шаблонного кода, который обычно требуется в найти сценарии.