2016-04-04 19 views
0

Ich versuche, eine einfache SDL-App mit CLion IDE (mingw-w64, CMake) laufen zu lassen.Verlinken von SDL2-Bibliotheken mit CMake

In diesem question heißt es, die folgenden Bibliotheken zu verknüpfen, um SDL2 mit mingw arbeiten zu lassen.

-lmingw32 -lSDL2main -lSDL2 -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid 

Ich weiß, was die ersten 3 sind und wie Sie sie finden und mit CMake verknüpfen. Ich habe keine Ahnung, wie ich den Rest der Bibliotheken einbinden soll, weil ich nicht weiß, wo sie sich befinden oder wie man auf sie zugreifen kann.

Gibt es auch einen Unterschied zwischen libSDL2 und lSDL2? SDL stellt libs mit dem Namen libSDL2.a zur Verfügung, aber ich sehe immer in Beispielen, dass es lSDL2 geschrieben wird.

Warum die lazyfoo tutorials sagen Sie nur lmingw32, lSDL2main und lSDL2 müssen? Es ist, was ich zur Zeit in CMake bin verbinden, aber ich bin immer undefiniert Verweise auf Dinge wie

SDL_windowskeyboard.c:617: undefined reference to `ImmGetIMEFileNameA' 
+0

Oh, wow. Ich füge sie einfach so hinzu wie es ist. Wie werden diese referenziert? Wo befinden sie sich unter Windows? target_link_libraries (Dark_Knights $ {MINGW32_LIBRARY} $ {SDL_MAIN_LIBRARY} $ {} SDL_LIBRARY -Im -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid) – ShrimpCrackers

+0

Haben Sie versucht, zu verwenden, 'find_package (SDL)' für Ihre Zwecke? Normalerweise ist es einfacher, mit 'find_package()' zu arbeiten, als manuell Bibliotheken aufzulisten. – Tsyvarev

Antwort

0

Die Lösung bestand darin, nur die Bibliotheken hinzufügen, wie sie ist. Mein Beispiel wäre gewesen:

target_link_libraries(Dark_Knights ${MINGW32_LIBRARY} ${SDL_MAIN_LIBRARY} ${SDL_LIBRARY} -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid)