Bonjour, l'utilisation de find_package(glfw3) ne fonctionne pas sur les nouvelles versions de la bibliothèque installée.
J'ai installé glfw3 sur ubuntu yakkety :
apt-get install libglfw3-dev
dpkg --status libglfw3-dev
La version installée est la 3.2.1-1.
Ensuite, j'ai le fichier cmake :
find_package(glfw3)
get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
Et l'exécuter comme cmake . | grep -i glfw
donne (sur yakkety):
-- CONFIG_FILES=/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Targets-none.cmake
-- GLFW3_DIR=GLFW3_DIR-NOTFOUND
-- _DIR=/usr/lib/x86_64-linux-gnu/cmake/glfw3
-- glfw3_CONFIG=/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Config.cmake
-- glfw3_CONSIDERED_CONFIGS=/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Config.cmake
-- glfw3_CONSIDERED_VERSIONS=3.2.1
-- glfw3_DIR=/usr/lib/x86_64-linux-gnu/cmake/glfw3
-- glfw3_FOUND=1
-- glfw3_VERSION=3.2.1
-- glfw3_VERSION_COUNT=3
-- glfw3_VERSION_MAJOR=3
-- glfw3_VERSION_MINOR=2
-- glfw3_VERSION_PATCH=1
-- glfw3_VERSION_TWEAK=0
-- glfw_DIR=glfw_DIR-NOTFOUND
Alors que sur ubuntu xenial, cela donne :
-- GLFW3_INCLUDE_DIR=/usr/include
-- GLFW3_LIBRARY=/usr/lib/x86_64-linux-gnu/libglfw.so
-- GLFW3_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu
-- GLFW3_VERSION=3.1.2
-- glfw3_CONFIG=/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Config.cmake
-- glfw3_CONSIDERED_CONFIGS=/usr/lib/x86_64-linux-gnu/cmake/glfw3/glfw3Config.cmake
-- glfw3_CONSIDERED_VERSIONS=3.1.2
-- glfw3_DIR=/usr/lib/x86_64-linux-gnu/cmake/glfw3
-- glfw3_FOUND=1
-- glfw3_VERSION=3.1.2
-- glfw3_VERSION_COUNT=3
-- glfw3_VERSION_MAJOR=3
-- glfw3_VERSION_MINOR=1
-- glfw3_VERSION_PATCH=2
-- glfw3_VERSION_TWEAK=0
Pour résumer, il manque GLFW3_INCLUDE_DIR
et GLFW3_LIBRARY
la nouvelle version.
GLFW 3.2 et versions ultérieures utilisent la fonction d'exportation cible CMake. La cible glfw
vous importez avec find_package
contient les répertoires nécessaires, les dépendances de temps de liaison, etc.
À partir de 3.2, tout ce que vous avez à faire est de :
find_package(glfw3)
target_link_libraries(myapplicationname glfw)
La documentation 3.2 a fait un très mauvais travail pour expliquer cela. Il a été quelque peu amélioré pour la 3.3.
Merci. Je l'ai fait fonctionner avec les deux versions maintenant.
Commentaire le plus utile
GLFW 3.2 et versions ultérieures utilisent la fonction d'exportation cible CMake. La cible
glfw
vous importez avecfind_package
contient les répertoires nécessaires, les dépendances de temps de liaison, etc.À partir de 3.2, tout ce que vous avez à faire est de :