ich bin für die einfachste Weg, um eine C++ Programm mit SDL2 und SDL_image mit cmake zu kompilieren.So verwenden SDL2 und SDL_image mit cmake
Hier ist mein bester Versuch, nach Stunden des Suchens:
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})
ich diese Fehler:
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
Hier ist der Funktionsaufruf:
#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;
}
Ich bin verzweifelt. Bitte hilf mir! Danke! :)
Denken Sie daran, dass SDL a * C * Bibliothek ist, und nicht eine C++ Bibliothek. C++ - Klassen wie 'std :: string' als Argumente zu verwenden, wird höchstwahrscheinlich nicht funktionieren. –
Da Sie neu hier auf SO sind, wenn Sie eine Frage bezüglich Build (Compiler oder Linker) -Fehler haben, fügen Sie bitte das Fehlerprotokoll * complete * und * unedited * in Ihre Frage ein, einschließlich des Codes, der den Fehler verursacht (vorzugsweise ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve)). In Ihrem Fall bearbeiten Sie bitte ** Ihre Frage ** und fügen Sie den Code, den Sie 'IMG_LoadTexture' nennen, zusammen mit genügend Kontext ein, um den Code zu verstehen (wie Variablendeklarationen etc.). –
Kennen Sie keine cmake-Details, aber sollten Sie '$ {SDL2_IMAGE_LIBRARIES}' auch nicht hinzufügen? – keltar