Salut, j'ai un problème avec Linkg Glfw et d'autres bibliothèques utilisant cmake. À partir de la ligne de commande, je compile comme ceci
g++ main.cpp -lGL -lGLU -lGLEW -lglfw
Mais je voulais utiliser cmake pour la compilation. J'ai essayé d'utiliser target_linkg_libraries mais cela produit une erreur
Erreur CMake sur CMakeLists.txt: 18 (target_link_libraries): Impossible de spécifier des bibliothèques de liens pour la cible "GL" qui n'est pas créée par ce
projet.
J'ai essayé de le faire en utilisant des définitions d'ajout. Je ne vois pas d'erreur mais cela ne lie pas les bibliothèques.
cmake_minimum_required (VERSION 2.6)
project (test)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
ADD_DEFINITIONS(
-lGL
-lGLU
-lGLEW
-lglfw
)
add_executable(test.out
main.cpp
)
target_link_libraries(GL GLU GLEW glfw)
La syntaxe de target_link_libraries
est:
target_link_libraries(your_executable_name libraries_list)
Et vous n'avez pas besoin d'ajouter add_definition
instructions (target_link_libraries
ajoute cette option)
Il existe également des variables utiles fournies par les packages OpenGL et GLEW.
Votre CMakeLists.txt devrait ressembler à:
cmake_minimum_required (VERSION 2.6)
project (test)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS})
add_executable(test
main.cpp
)
target_link_libraries(test ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES})
Un détail important à garder à l'esprit est de placer le target_link_libraries
après le add_executable
(ou add_library
) ligne.