sto cercando il modo più semplice per compilare un programma C++ utilizzando SDL2 e SDL_image con CMake.Come utilizzare SDL2 e SDL_image con CMake
Ecco il mio miglior tentativo, dopo ore di ricerca:
CMakeLists.txt
project(shooter-cmake2)
cmake_minimum_required(VERSION 2.8)
set(SOURCES
shooter.cpp
classes.cpp
utils.cpp
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_executable(${PROJECT_NAME} ${SOURCES})
INCLUDE(FindPkgConfig)
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2_image REQUIRED sdl2_image)
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARY})
ottengo questi errori:
In function `loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SDL_Renderer*)':
undefined reference to `IMG_LoadTexture'
collect2: ld returned 1 exit status
Ecco la chiamata di funzione:
#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;
}
Sono disperata. Mi aiuti per favore! Grazie! :)
Ricordate che è una libreria SDL * * C, e non una libreria C++. Quindi usare le classi C++ come 'std :: string' come argomenti probabilmente non funzionerà. –
Inoltre, dal momento che sei nuovo qui su SO, se hai una domanda riguardante errori di compilazione (linker o linker), ti preghiamo di includere il log degli errori * completo * e * non modificato nella tua domanda, incluso il codice che causa l'errore (preferibilmente un esempio [Minimo, Completo e Verificabile] (http://stackoverflow.com/help/mcve)). Nel tuo caso, per favore ** modifica la tua domanda ** per includere il codice in cui chiami 'IMG_LoadTexture' insieme con un contesto sufficiente per comprendere il codice (come le dichiarazioni delle variabili ecc.). –
Non conosco le specifiche di cmake, ma non dovresti aggiungere anche '$ {SDL2_IMAGE_LIBRARIES}'? – keltar