bjam und Libraries...



  • Ich habe hier den Artikel über boost.build gelesen, und daraufhin angefangen, etwas damit rumzuspielen.
    Dabei ist mir ein Verhalten aufgefallen, dass mir irgendwie nicht so ganz einleuchtet:
    Nehmen wir an, ich habe folgend Struktur:

    top/
      |
      +-jamroot.jam
      |
      +-exe_test/
      |        |
      |        +-jamfile.jam
      |        +-test.cpp
      |
      +-lib_test/
               |
               +-jamfile.jam
               +-lib.h
               +-lib.cpp
    

    Und ich habe in exe_test/jamfile.jam folgendes stehen:

    exe my_target : test.cpp ;
    

    Dann kann ich von top/ aus mit bjam my_target das entsprechende Ziel bauen.

    Wenn ich hingegen in lib_test/jamfile.jam stehen habe:

    lib my_lib : lib.cpp ;
    

    Dann kann ich die lib nicht mit bjam my_lib bauen (Also den im jamfile angegebenen Targetnamen), sondern ich muss den Verzeichnisnamen angeben, also bjam lib_test . Soll das so sein? Oder verstehe ich da irgendwas nicht?

    PS: Es geht nicht um das Einbinden der lib, sondern erstmal nur ums Bauen.



  • Also bei mir funktioniert dein erster Fall mit der exe nicht. Kann sein das es ein Bug bei deiner Version ist. Welche bjam-Version hast du?
    Meine Version:

    bjam.exe --version schrieb:

    Boost.Build V2 (Milestone 11)
    Boost.Jam 03.1.15

    Normalerweise gibt man den Namen des Verzeichnisses an. Und wenn man einen Target bauen will, kommt der hinter dem Verzeichnis. Also etwa so:

    bjam lib_test//my_lib
    

    Bei mir funktioniert es auch bei exe-Projekten nur so.



  • Artchi schrieb:

    Also bei mir funktioniert dein erster Fall mit der exe nicht. Kann sein das es ein Bug bei deiner Version ist.

    Verdammt, Du hast recht. Das im Post konstruierte Beispiel entspricht nicht dem, was ich auf der Platte habe.
    Da ist der Name des exe-Verzeichnisses gleich dem Namen des Targets. Bei der lib sind die Namen unterschiedlich. 😡


Anmelden zum Antworten