Frage

Wie kann ich einige einzigartige Flags angeben, für DLL nur aufbaut. Standardmäßig fügt libtool -DDLL_EXPORT, die gut für die meisten Projekte ist die GNU-Konventionen folgen, aber wenn ich arbeite zum Beispiel mit Boost-kann ich für meine Bibliothek Flags angeben müssen: -DDLL_EXPORT -DBOOST_ALL_DYN_LINK für DLL baut nur, auch manchmal möchte ich bedingte baut so ich müssen einige spezifische definiert für DLL / SO zu bauen.

Leider kann ich nicht einen Weg finden, wie dies zu tun mit libtool, welche Fahnen soll ich verwenden?

P. S:.. Do auch nicht versuchen zu suggerieren CMake zu bewegen

Beispiel:

Ich benutze Bibliothek foo, dass Links zu versperren und erfordern -DBAR_EXPORTS nur Symbole für die dynamische Bibliothek zu erhalten.

Gibt es so etwas wie

 libfoo_la_dynamic_CXXFLAGS = -DBAR_EXPORTS

Wer?

Alternative Lösung: (ziemlich hässlich)

Erstellen Sie eine Datei `defines.h

#if defined(PIC) || defined(DLL_EXPORT)
#define BAR_EXPORTS
#endif

Und dann:

 libfoo_la_CXXFLAGS += -include defines.h

hässlich, aber sollte funktionieren.

War es hilfreich?

Lösung

Sie können deaktivieren Shared Library Aufbau standardmäßig mit

LT_INIT([disable-shared])

, dann können Sie AM_CONDITIONAL mit --enabled-shared kombiniert verwenden und die zusätzlichen Definitionen, wenn gemeinsam genutzte Bibliothek explizit angefordert wird. IOW, ermöglichen den Aufbau statischer oder geteilt, aber nicht beides gleichzeitig.

Andere Tipps

Nicht, dass hübsch, aber könnten Sie ein bedingte zu überprüfen, ob DLL_EXPORT definiert ist, und wenn es die andere ist definieren Sie brauchen?

Ich bin nicht so gut mit Autotool, ziehe ich CMake aber Sie scheinen ganz dagegen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top