cmake und BOOST_ROOT



  • vorneweg: wnen das Unterforum falsch sein sollte, gerne verschieben! Irgendwie passte nichts.

    Ich schlage mich seit ner Weile mit cmake rum. Wir haben bei unserer Bibliothek das Problem, dass wir eine neuere Boost-Version brauchen als auf einigen Linux Distributionen (Debian, Ubuntu) vorhanden ist. Das ist schlecht. Wir compilieren also Boost in einem anderen Pfad und müssen dann das findBoost Modul darauf hinweisen, wo es das gibt. Laut der Dokumentation muss man dazu BOOST_ROOT setzen.

    wie folgt funktioniert das sehr gut:

    SET(BOOST_ROOT "/home/user/boost")
    SET( Boost_USE_MULTITHREADED OFF)
    FIND_PACKAGE( Boost COMPONENTS system filesystem serialization)
    

    Da shat natürlich den Nachteil, dass jeder sich die CMakeLiss.txt anpassen muss und dann jeder beim einchecken mit svn aufpassen muss, dass seine Daten nicht mit eingecheckt werden.

    Man kann auch Boost_Root über die Kommandozeile setzen:

    cmake -i -DBOOST_ROOT:PATH=/home/user/boost/
    

    aber das hat den Nachteil, ziemlich schlecht selbstdokumentierend zu sein und wir wollen das deswegen eigentlich in der cmake-gui haben.

    Also habe ich versucht, den ersten Code etwas umzuwandeln zu:

    SET(BOOST_ROOT "/usr/include" CACHE PATH "set to to your path to boost")
    

    nun wird das in der gui angezeigt, aber der neu eingegebene Wert von findBoost ignoriert 😡 . Gibts einen Weg, das irgendwie zu fixen?



  • Kannst du den Wert für BOOST_ROOT nicht aus einer Umgebungs-variable füllen, die dann jeder Entwickler passend für seine Maschine setzen muss?



  • Hast du mal geschaut, welcher Wert im Cache steht? (CMakeCache.txt im Buildverzeichnis)

    otze schrieb:

    Man kann auch Boost_Root über die Kommandozeile setzen:

    cmake -i -DBOOST_ROOT:PATH=/home/user/boost/
    

    aber das hat den Nachteil, ziemlich schlecht selbstdokumentierend zu sein und wir wollen das deswegen eigentlich in der cmake-gui haben.

    Ja, das stinkt. Aus dem Grund habe ich eigentlich immer ein configure-Script um CMake rum. Dann schaut das ganze auch gewohnt wie configure/make aus und man kann da einfach eine Dokumentation einbauen.



  • es gibt auch noch Boost_NON_SYSTM_PATHS
    das verhindert das boost auf die Systempfade zugückgreift



  • eXistence schrieb:

    Kannst du den Wert für BOOST_ROOT nicht aus einer Umgebungs-variable füllen, die dann jeder Entwickler passend für seine Maschine setzen muss?

    das ist aber nicht wirklich besser als die übergabe mit -DBOOST_ROOT...

    @rüdiger Der Cache für die Variable ist super. BOOST_ROOT ist korrekt gesetzt aber für den Rest ist es halt ziemlich egal, da werden fleissig die falschen includepfade und libs gesetzt.

    Aber da smit dem configure script klingt gut. Auch wenn ich das Gefühl habe, das cmake uns eigentlich von sowas erlösen sollte...


Anmelden zum Antworten