Verwendung von CMake zur Integration von SDL2 und SDL_image
In diesem Artikel befassen wir uns mit der Frage der Kompilierung eines C-Programms, das SDL2 und SDL_image verwendet mit CMake. Nach gründlicher Untersuchung entstand das folgende optimierte CMake-Skript:
project(shooter-cmake2) cmake_minimum_required(VERSION 2.8) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") add_executable(${PROJECT_NAME} src/test.cpp) INCLUDE(FindPkgConfig) PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES})
Dieses CMake-Skript lokalisiert effektiv die erforderlichen Bibliotheken auf Ubuntu-Systemen und ermöglicht die erfolgreiche Verknüpfung der bereitgestellten Beispielfunktion:
#include "SDL.h" #include "SDL_image.h" SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren){ SDL_Texture *texture = IMG_LoadTexture(ren, file.c_str()); texture != nullptr or die("LoadTexture"); return texture; }
Beim Ausführen von CMake mit dem Flag --debug-output wird die folgende Ausgabe generiert:
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") Called from: [2] /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake [1] $USER/stack-overflow/cmake-sdl2-image/CMakeLists.txt -- checking for one of the modules 'sdl2' Called from: [1] $USER/stack-overflow/cmake-sdl2-image/CMakeLists.txt -- checking for one of the modules 'SDL2_image>=2.0.0' Called from: [1] $USER/stack-overflow/cmake-sdl2-image/CMakeLists.txt
Eine weitere Untersuchung der entsprechenden pkgconfigs ergab, dass SDL2_image.pc die Zeile Name: SDL2_image enthält, die mit dem übereinstimmt Dritter Parameter von PKG_SEARCH_MODULE.
Das obige ist der detaillierte Inhalt vonWie integriere ich SDL2 und SDL_image mit CMake?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!