Oi, usando find_package (glfw3) não funciona em versões mais recentes da biblioteca instalada.
Instalei o glfw3 no ubuntu yakkety:
apt-get install libglfw3-dev
dpkg --status libglfw3-dev
A versão instalada é 3.2.1-1.
Então, eu tenho o arquivo cmake:
find_package(glfw3)
get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
E executá-lo como cmake . | grep -i glfw
dá (no 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
Considerando que no ubuntu xenial, ele oferece:
-- 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
Para resumir, a versão mais recente está faltando GLFW3_INCLUDE_DIR
e GLFW3_LIBRARY
.
GLFW 3.2 e posterior usa o recurso de exportação de destino CMake. O destino glfw
você importou com find_package
contém os diretórios necessários, dependências de tempo de link, etc.
A partir do 3.2, tudo o que você precisa fazer é:
find_package(glfw3)
target_link_libraries(myapplicationname glfw)
A documentação do 3.2 fez um trabalho muito ruim ao explicar isso. Foi um pouco melhorado para 3.3.
Obrigada. Eu fiz funcionar com as duas versões agora.
Comentários muito úteis
GLFW 3.2 e posterior usa o recurso de exportação de destino CMake. O destino
glfw
você importou comfind_package
contém os diretórios necessários, dependências de tempo de link, etc.A partir do 3.2, tudo o que você precisa fazer é: