Utilisation de SDL2 avec CMake : résolution des en-têtes non valides inclus
Lors de l'intégration de SDL2 dans un projet utilisant CLion et CMake, les développeurs peuvent rencontrer des difficultés pour inclure en-têtes nécessaires en raison d'un échec de résolution du chemin d'en-tête. Cet article vise à résoudre ce problème et à fournir une solution complète.
Dans le fichier CMakeLists.txt fourni, le chemin d'accès au répertoire d'inclusion SDL2 et aux bibliothèques est explicitement défini :
set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)
Cependant, cette approche repose sur l'hypothèse que les chemins spécifiés sont corrects et que les chemins de recherche d'en-tête du système sont correctement configurés.
Pour résoudre ce problème, nous vous recommandons d'utiliser la commande find_package() fournie par CMake. Cette commande recherchera automatiquement la bibliothèque SDL2 et définira les variables appropriées, notamment SDL2_INCLUDE_DIRS et SDL2_LIBRARIES.
Pour les systèmes basés sur Linux avec des versions récentes de CMake (par exemple, 3.7 ou ultérieure), ce processus devrait être simple :
cmake_minimum_required(VERSION 3.7)
project(SDL2Test)
find_package(SDL2 REQUIRED)
Pour les systèmes Windows, il est nécessaire de créer manuellement un fichier sdl-config.cmake dans le répertoire du package de développement SDL2 extrait. Voici un exemple du contenu du fichier :
set(SDL2_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include")
# Support both 32 and 64 bit builds
if (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
set(SDL2_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2main.lib")
else ()
set(SDL2_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2main.lib")
endif ()
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
Lors de la configuration du projet dans l'application CMake-GUI, la variable SDL2_DIR apparaîtra. Il doit être défini sur le répertoire SDL2 extrait du package dev. Après cette étape, le projet reconfiguré doit trouver correctement les en-têtes et bibliothèques nécessaires, permettant l'inclusion transparente des en-têtes SDL2 en utilisant la syntaxe familière :
#include
#include "SDL.h"
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3