CMake find_library не выполняет поиск в указанных каталогах - PullRequest
0 голосов
/ 30 мая 2020

Я написал следующий .cmake скрипт для поиска установленной библиотеки на моем Linux компьютере:

FindGLAD.cmake:

# Locate the glad library
#
# This module defines the following variables:
#
# GLAD_LIBRARY          The name of the library;
# GLAD_INCLUDE_DIR      Where to find glfw include files.
# GLAD_FOUND            True if both the GLAD_LIBRARY and GLAD_INCLUDE_DIR have been found. 
#
# To help locate the library and include file, you can define a
# variable called GLAD_ROOT which points to the root of the glad library
# installation.

set(_glad_HEADER_SEARCH_DIRS
    "/usr/include"
    "/usr/local/include"
    "${CMAKE_SOURCE_DIR}/includes"
    "C:/Program Files (x86)/glfw/include" 
)

set(_glad_LIB_SEARCH_DIRS
    "/usr/lib"
    "/usr/local/lib"
    "${CMAKE_SOURCE_DIR}/lib"
    "C:/Program Files (x86)/glfw/lib-msvc110" 
)

# Check environment for root search directory
set(_glad_ENV_ROOT $ENV{GLAD_ROOT})
if(NOT GLAD_ROOT AND _glad_ENV_ROOT)
    set(GLAD_ROOT ${_glad_ENV_ROOT})
endif()

# Put user specified location at beginning of search
if(GLAD_ROOT)
    list(INSERT _glad_HEADER_SEARCH_DIRS 0 "${GLAD_ROOT}/include")
    list(INSERT _glad_LIB_SEARCH_DIRS 0 "${GLAD_ROOT}/lib")
endif()

# Search for the header
find_path(GLAD_INCLUDE_DIR
    NAMES "glad/glad.h" 
    PATHS ${_glad_HEADER_SEARCH_DIRS} 
    PATH_SUFFIXES "include" 
    NO_DEFAULT_PATH
)

# Search for the library
find_library(GLAD_LIBRARY 
    NAMES "glad" 
    PATHS ${_glad_LIB_SEARCH_DIRS} 
    PATH_SUFFIXES "lib" 
    NO_DEFAULT_PATH
) 


set(GLAD_FOUND "NO")

if(GLAD_INCLUDE_DIR AND GLAD_LIBRARY)
    set(GLAD_FOUND "YES") 
    message("EXTERNAL LIBRARY 'GLAD' FOUND AT ${GLAD_LIBRARY} AND ${GLAD_INCLUDE_DIR}")
else()
    message("ERROR: EXTERNAL LIBRARY 'GLAD' NOT FOUND")
endif(GLAD_INCLUDE_DIR AND GLAD_LIBRARY)

Но когда я вызываю find_package (GLAD ОБЯЗАТЕЛЬНО) Я получаю результат

EXTERNAL LIBRARY 'GLAD' FOUND AT /usr/local/include AND /usr/local/include

Почему /usr/local/include появляется в переменной GLAD_LIBRARY?

Я посмотрел, и библиотека окончательно существует под usr/local/lib

Когда я вызываю call target_link_libraries, я получаю предупреждение о том, что я пытался связать что-то с чем-то в подключаемом каталоге, что имеет смысл, поскольку GLAD_LIBRARY содержит неправильный путь.

EDIT:

Извините за публикацию всего сценария, но я не хотел пропустить что-то важное

...