2009-07-05 10 views
3

Die Standardeinstellung für den Boost C++ Bibliotheken Namenskonvention ist:Building Boost ohne Dateinamen Dekorationen?

libboost_regex-vc71-mt-d-1_34.lib

wo alle Bibliotheken in das gleiche Verzeichnis erstellt werden. Ich möchte den Build-Prozess so ändern, dass der Dateiname nicht die Zielarchitektur oder den Build-Typ enthält (Versionen sind in Ordnung).

vc71/debug/libboost-1_34.lib

vc71/release/libboost-1_34.lib

dies Jede Idee, wie zu tun: Ich möchte, dass die Datei in einem anderen Verzeichnis auf der Architektur abhängig, am Ende wird für gebaut?

Antwort

3

Sie können die gesamte Dekoration aus den Dateinamen der Bibliothek entfernen, indem Sie "--layout = system" übergeben. Ihr Beispiel oben zeigt "vc71/release" Pfade - es gibt keine Out-of-Box-Möglichkeit, dieses Layout zu erhalten. Du kannst das mit ein bisschen hackign machen. In Jamroot, finden die ‚bühnen richtige‘ Ziel, das sich die Position als spezifiziert:

<location>$(stage-locate)/lib 

Sie, dass verschiedene Standorte in Abhängigkeit von Eigenschaften angeben, ändern kann, zB:

<variant>release:<location>$(stage-locate)/lib/release 
    <variant>debug:<location>$(stage-locate)/lib/debug 

Bitte sehen Boost.Build website für mehr Dokumentation

+1

Wo wird --layout dokumentiert? Ich schaute überall hin und ich kann nichts davon finden. – Gili

+0

Es ist in der Ausgabe von "bjam --help". Erste Schritte bezieht sich auf diese Optionen für Details. –

0

Ich kenne keine Möglichkeit, das mit dem Boost-Build-System zu tun, aber Sie könnten ein ziemlich einfaches Skript verwenden, um sie zu verschieben und ohne große Schwierigkeiten umzubenennen.

Auf der anderen Seite, mit den meisten Windows-Compiler, müssen Sie nur selten, sich mit den Bibliotheksdateinamen betreffen, weil für die Bibliotheken, die eine separate binäre erfordern, Boost-beschäftigt auto-linking:

Die meisten Windows-Compiler und Linker haben so genannte "Auto-Linking-Unterstützung", die die zweite Herausforderung beseitigt. Spezieller Code in Boost-Headerdateien erkennt Ihre Compileroptionen und verwendet diese Informationen, um den Namen der richtigen Bibliothek in Ihre Objektdateien zu codieren; Der Linker wählt die Bibliothek mit diesem Namen aus den Verzeichnissen aus, die Sie zum Durchsuchen angegeben haben.

Verschieben und umbenennen der Dateien würde das brechen.