Я написал следующий .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:
Извините за публикацию всего сценария, но я не хотел пропустить что-то важное