Verwenden von SDL2 mit CMake: Beheben ungültiger Header-Includes
Bei der Integration von SDL2 in ein Projekt mithilfe von CLion und CMake können Entwickler beim Einbinden auf Schwierigkeiten stoßen Erforderliche Header aufgrund fehlgeschlagener Header-Pfadauflösung. Ziel dieses Artikels ist es, dieses Problem anzugehen und eine umfassende Lösung bereitzustellen.
In der bereitgestellten Datei CMakeLists.txt ist der Pfad zum SDL2-Include-Verzeichnis und den SDL2-Bibliotheken explizit festgelegt:
set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)
Dieser Ansatz basiert jedoch auf der Annahme, dass die angegebenen Pfade korrekt sind und dass die Header-Suchpfade des Systems ordnungsgemäß konfiguriert sind.
Um dieses Problem zu beheben, empfehlen wir die Verwendung des von CMake bereitgestellten Befehls find_package(). Dieser Befehl sucht automatisch nach der SDL2-Bibliothek und legt die entsprechenden Variablen fest, einschließlich SDL2_INCLUDE_DIRS und SDL2_LIBRARIES.
Für Linux-basierte Systeme mit aktuellen CMake-Versionen (z. B. 3.7 oder höher) sollte dieser Vorgang unkompliziert sein:
cmake_minimum_required(VERSION 3.7)
project(SDL2Test)
find_package(SDL2 REQUIRED)
Für Windows-Systeme ist es notwendig, manuell eine sdl-config.cmake-Datei im extrahierten SDL2-Entwicklungspaketverzeichnis zu erstellen. Hier ist ein Beispiel für den Inhalt der Datei:
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)
Beim Konfigurieren des Projekts innerhalb der CMake-GUI-Anwendung wird die Variable SDL2_DIR angezeigt. Es sollte auf das aus dem Entwicklungspaket extrahierte SDL2-Verzeichnis festgelegt werden. Nach diesem Schritt sollte das neu konfigurierte Projekt die erforderlichen Header und Bibliotheken korrekt finden und die nahtlose Einbindung von SDL2-Headern mithilfe der bekannten Syntax ermöglichen:
#include
#include "SDL.h"
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3