[GELÖST] Fedora: SDL (+ CMAKE) - Pfadprobleme?
-
Guten Morgen,
ich bin nun von Ubuntu auf Fedora 16 umgestiegen und habe meine Projekte folglich mitgenommen. Hierbei treten jedoch arge Fehler auf, wenn ich versuche, Programme mit CMake und SDL zu kompilieren.
Beispiel eines
CMakeLists.txt
-Ausschnitts:# required # ----------------- Find_Package ( SDL REQUIRED ) Find_Package ( SDL_image REQUIRED ) Find_Package ( SDL_mixer REQUIRED ) Find_Package ( SDL_ttf REQUIRED ) Find_Package ( OpenGL REQUIRED ) # Workaround for the non-working REQUIRED flag # ----------------- if ( NOT SDL_FOUND ) message ( FATAL_ERROR "SDL not found!" ) endif ( NOT SDL_FOUND ) if ( NOT SDLIMAGE_FOUND ) message ( FATAL_ERROR "SDL_image not found!" ) endif ( NOT SDLIMAGE_FOUND ) if ( NOT SDLMIXER_FOUND ) message ( FATAL_ERROR "SDL_mixer not found!" ) endif ( NOT SDLMIXER_FOUND ) if ( NOT SDLTTF_FOUND ) message ( FATAL_ERROR "SDL_ttf not found!" ) endif ( NOT SDLTTF_FOUND ) if ( NOT OPENGL_FOUND ) message ( FATAL_ERROR "OpenGL not found!" ) endif ( NOT OPENGL_FOUND ) link_libraries ( ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${SDLMIXER_LIBRARY} ${SDLTTF_LIBRARY} SDLmain ${OPENGL_LIBRARY} )
Die Pakete sind alle installiert, doch sobald ich
make
ausführe, erhalte ich folgende Fehlermeldung:make[2]: *** Keine Regel vorhanden, um das Target »/usr/lib/libSDLmain.a«,
benötigt von »Programmname«, zu erstellen. Schluss.Kommentiere ich bei
link_libraries ()
die Zeile${SDL_LIBRARY}
aus, so erhalte ich gleiche Meldung mit libSDL_image.so und so weiter. (abgesehen von SDLmain)Ich bitte um dringende Hilfe.
MfG,
Ki
-
link_libraries ist wohl deprecated. Nimm target_link_libraries.
zB
# ... include_directories(${SDL_INCLUDE_DIR} #... Nicht vergessen! ) add_executable(foo foo.c bar.c) target_link_libraries(foo ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY} ${SDLMIXER_LIBRARY} ${SDLTTF_LIBRARY} SDLmain ${OPENGL_LIBRARY})
-
Leider wird der Fehler dadurch nicht behoben.
EDIT:
Ich habe mir mal ein paar meiner Test-Programme angeschaut.
Beispiel:
#include "SDL/SDL.h" // domain SDL function #include "SDL/SDL_opengl.h" // OpenGl commands #include "SDL/SDL_image.h" // SDL_image functions // CODE
Compiling-Befehl:
g++ -o test main.cpp -lSDLmain -lSDL -lGL -lSDL_image
Ausgabe:
/usr/bin/ld: cannot find -lSDLmain
collect2: ld gab 1 als Ende-Status zurückAusgabe von g++ -v:
Es werden eingebaute Spezifikationen verwendet.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.6.2/lto-wrapper
Ziel: x86_64-redhat-linux
Konfiguriert mit: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread-Modell: posix
gcc-Version 4.6.2 20111027 (Red Hat 4.6.2-1) (GCC)EDIT2:
Es fehlte das Paket SDL-static. Nun wird zwar -lSDL erkannt, jedoch bleibt das Problem mit dem Makefile.
Es scheint also doch mit CMAKE direkt zu tun zu haben.
EDIT3:
Schlag mich bitte irgendjemand!
Problem gelöst, ich bin so blöd gewesen, den CMAKE-Cache mit zu kopieren.