Maison >développement back-end >C++ >Comment corriger les inclusions d'en-tête invalides lors de l'utilisation de SDL2 avec CMake ?

Comment corriger les inclusions d'en-tête invalides lors de l'utilisation de SDL2 avec CMake ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 15:35:30337parcourir

How to Fix Invalid Header Includes When Using SDL2 with CMake?

Utilisation de SDL2 avec CMake : résolution des inclusions d'en-tête non valides

Lors de l'intégration de SDL2 dans un projet à l'aide de 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 :

<code class="cmake">set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)</code>

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 :

<code class="cmake">cmake_minimum_required(VERSION 3.7)
project(SDL2Test)

find_package(SDL2 REQUIRED)</code>

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 :

<code class="cmake">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)</code>

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 :

<code class="c++">#include <iostream>
#include "SDL.h"</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn