[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ück

    Ausgabe 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.


Anmelden zum Antworten