J'apprends actuellement CMake et j'essaye de créer mon premier projet de test. Je suis capable de faire fonctionner un projet simple en studio visuel via CMake. Cependant, j'ai du mal à essayer d'ajouter une bibliothèque. J'ai lu quelques guides et des choses mais je continue à obtenir des erreurs. Fondamentalement, j'essaye de relier des bibliothèques de SDL (une bibliothèque de programmation de jeu) dans mon projet d'échantillon. J'ai placé ces bibliothèques dans un dossier de niveau supérieur, "ThirdParty". Voici ce que mon fichier CMakeLists.txt ressemble dans mon répertoire de niveau supérieur:Comment lier correctement mes bibliothèques dans mon projet en utilisant CMake?
cmake_minimum_required(VERSION 2.8.11)
project(Hello)
#Find necessary header files
find_path(SDL_INCLUDE_DIR SDL.h HINTS ${CMAKE_SOURCE_DIR}/ThirdParty/SDL2/include/)
#Find necessary library files
find_library(SDL_LIB_DIR SDL2 HINTS ${CMAKE_SOURCE_DIR}/ThirdParty/SDL2/lib/x86)
find_library(SDLMAIN_LIB_DIR SDLmain HINTS ${CMAKE_SOURCE_DIR}/ThirdParty/SDL2/lib/x86)
#Add/Link files to project
include_directories(${SDL_INCLUDE_DIR})
target_link_libraries(Test PUBLIC ${SDL_LIB_DIR})
target_link_libraries(Test PUBLIC ${SDLMAIN_LIB_DIR})
add_executable(Test "${CMAKE_SOURCE_DIR}/Source/Main.cpp")
Je ne suis pas sûr à 100 pour cent du paramètre HINTS, mais je l'ai vu utilisé sur un autre fil. Quoi qu'il en soit, voici l'erreur que je continue à obtenir:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
SDLMAIN_LIB_DIR
linked by target "Test" in directory C:/Users/Jason/Desktop/Test
Qu'est-ce que je fais mal et comment puis-je créer un lien bien des bibliothèques dans CMake?
Comme vous pouvez le voir dans le message d'erreur, le problème n'est pas * avec la bibliothèque * SDLmain, mais avec ** search ** it - c'est find_library() 'qui définit la valeur * NOTFOUND * quand elle ne peut pas trouver la bibliothèque demandée. Voir [cette question] (http://stackoverflow.com/questions/14243524/cmake-find-library-matching-behavior) sur le fonctionnement de 'find_library' et comment trouver votre bibliothèque avec. – Tsyvarev