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
Libérer: 2024-11-02 15:35:30
original
409 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal