【问题标题】:CMake find_library does not find the libraryCMake find_library 找不到库
【发布时间】:2013-07-19 13:35:16
【问题描述】:

我想出了以下超级简单的 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()

获取包含和库路径很简单。但是,除非我包含扩展名,否则它在 Ubuntu 中找不到文件“libmagma.a”或在 Mac OS X 中找不到文件“libmagma.dylib”,但这违背了目的,不是吗?谁能告诉我在这里做错了什么?

【问题讨论】:

    标签: cmake magma


    【解决方案1】:

    从库名称中删除前导 lib

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

    另外,请查看FindPackageHandleStandardArgs,它可以帮助您摆脱查找脚本中通常需要的一些样板代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 2013-02-23
      • 1970-01-01
      • 2012-08-18
      相关资源
      最近更新 更多