Cmake findet *.rc-file nicht



  • Hallo zusammen,

    wahrscheinlich passt das nicht so richtig in dieses Unterforum.. und damit oute ich mich dann gleich mal als Anfänger.

    Ich nutze Visual Studio Community 2015 und CMake 3.10.2 und würde gerne die Bullet Physic Engine in meinem Projekt nutzen.

    Zum Testen wollte ich nun zunächst ein "BasicExample" von Bullet bauen.

    in der CMakeList.txt steht unter anderem:
    ------------------------------------------------------
    IF (WIN32)
    ADD_EXECUTABLE(App_BasicExample
    BasicExample.cpp
    main.cpp
    ${BULLET_PHYSICS_SOURCE_DIR}/build3/bullet.rc
    )
    ELSE()
    ADD_EXECUTABLE(App_BasicExample
    BasicExample.cpp
    main.cpp
    )
    ENDIF()
    ------------------------------------------------------

    In CMake erhalte ich dann aber den Fehler:
    ------------------------------------------------------
    Configuring done
    CMake Error at CMakeLists.txt:15 (ADD_EXECUTABLE):
    Cannot find source file:

    /build3/bullet.rc

    Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
    .hxx .in .txx

    CMake Error: CMake can not determine linker language for target: App_BasicExample
    CMake Error: CMake can not determine linker language for target: AppBasicExampleGui
    Generating done
    ------------------------------------------------------

    Was könnte das für Ursachen haben? Die Datei befindet sich an dem Ort. Ich habe nachträglich das Windows 10 SDK installiert (Tipp aus dem WWW) in dem ja scheinbar rc.exe enthalten ist. Leider bekomme ich immer noch den gleichen Fehler.

    Hat jemand eine Idee was ich noch ausprobieren könnte?

    Beste Grüße
    Jonas



  • Naja BULLET_PHYSICS_SOURCE_DIR scheint nicht definiert bzw. leer zu sein. Das wird wohl nicht richtig sein.



  • Habe vorher eine Systemvariable BULLET_PHYSICS_SOURCE_DIR mit dem Wert C:\...\bullet3-2.87 erstellt in dem sich dann der build3 Ordner mit der Datei befindet. Falls das so ok bzw. ausreichend ist müsste es ja eine andere Ursache haben.



  • Naja ich sags mal so: versuch mal, ausgehend von

    Cannot find source file:
    
    /build3/bullet.rc
    

    und

    ${BULLET_PHYSICS_SOURCE_DIR}/build3/bullet.rc
    

    darauf rückzuschliessen wie ${BULLET_PHYSICS_SOURCE_DIR} in dem Skript wohl interpretiert/erweitert wird 😉

    jonas93 schrieb:

    Habe vorher eine Systemvariable BULLET_PHYSICS_SOURCE_DIR mit dem Wert C:\...\bullet3-2.87 erstellt in dem sich dann der build3 Ordner mit der Datei befindet. Falls das so ok bzw. ausreichend ist müsste es ja eine andere Ursache haben.

    Ehrlich gesagt hab ich keine Ahnung ob CMake Umgebungsvariablen als CMake-Properties abbildet. Sollte sich aber ergoogeln lassen.
    Falls CMake das nicht macht hättest du das Problem gefunden.
    Falls CMake das doch macht bliebe noch die Möglichkeit dass die Command-Shell aus der du CMake aufgerufen hast die neue Umgebungsvariable noch nicht mitbekommen hat. Je nachdem wann und auch wie die Command-Shell gestartet wurde kann das schonmal sein.

    Kannst du aber einfach ausprobieren indem du einfach set (ohne weitere Switches/Argumente) in der Command-Shell eingibst.



  • Danke für deine Antwort. Leider weiß ich noch immer nicht genau worauf du hinaus möchtest:-/

    Bekomme ich bitte noch einen Wink mit dem Zaunpfahl?

    Achso und ich habe bisher alles nur im CMake-GUI gemacht.

    Gruß
    Jonas



  • Wenn ich wüsste was du genau falsch gemacht hast würde ich es dir schon verraten 😉
    Ich sehe da nur

    Cannot find source file:
    
    /build3/bullet.rc
    

    und

    ${BULLET_PHYSICS_SOURCE_DIR}/build3/bullet.rc
    

    Damit ist klar dass CMake den Teil "${BULLET_PHYSICS_SOURCE_DIR}" mit "" (=Leerer String) ersetzt. Das ist das übliche Verhalten von so Build-Systemen (oder generell gescriptetem Zeugs) wenn eine Variable nicht definiert ist.
    Daher mein Tip: Die Variable wird wohl nicht definiert sein.

    Das Bisschen was ich mit CMake gemacht habe hat diesbezüglich, also Verwendung von Variablen, gut funktioniert. Allerdings habe ich dabei keine Environment-Variablen verwendet -- bloss Variablen die ich in CMake in einem Package-Config File davor selbst mit set definiert habe.

    Laut dem was ich auf die Schnelle gefunden habe wie man Environment-Variablen aus CMake heraus verwendet wäre die Syntax dafür $ENV{name}
    Also versuch mal

    ENV${BULLET_PHYSICS_SOURCE_DIR}/build3/bullet.rc
    


  • Funktioniert leider auch nicht. Also .cpp-Dateien können z.B. über diese Pfadangabe gefunden werden aber diese .rc-Datei irgendwie nicht. Das ist ja scheinbar eh nur eine Resource für das Icon der .exe in diesem Fall. Werde es also erstmal ignorieren jetzt.

    Ich danke dir trotzdem für deine Hilfe! Sorry für die späte Rückmeldung.


Anmelden zum Antworten