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 mitbjam 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, alsobjam 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.15Normalerweise 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.