2010-10-20 12 views
8

In Visual C++, è possibile eseguire il collegamento a una libreria nel codice stesso eseguendo #pragma comment (lib, "libname.lib"). Qualcosa di simile è possibile in g ++?collegamento con un pragma con g ++

+0

Posso chiedere perché vorresti farlo? –

+2

@Robert: collegamento basato su #if definito (...); semplificare l'inclusione del codice senza modificare i Makefile, ecc. –

+2

@Zan Lynx: Questo è vero, ma solo se si utilizza un sistema di generazione fastidioso. Vorrei raccomandare usando CMake perché quindi è sufficiente aggiungere una, forse due righe al file CMakeLists.txt per fare esattamente la stessa cosa. Questo è quello che faccio invece. Avete qualche restrizione sugli strumenti di costruzione? –

risposta

3

La libreria Boost Config ha un certo supporto per l'autolinking, utilizzando il codice specifico del compilatore per il particolare compilatore. Tuttavia, la documentazione di notare che la toolchain GCC doesn't support autolinking:

Auto-Linking

compilatori e linker maggior parte delle finestre hanno cosiddetto “supporto auto-collega,” che elimina la seconda sfida. Il codice speciale nei file di intestazione Boost rileva le opzioni del compilatore e utilizza le informazioni per codificare il nome di la libreria corretta nell'oggetto file; il linker seleziona la libreria con quel nome dalle directory che gli hai detto di cercare.

Le toolchain GCC (Cygwin e MinGW) sono eccezioni notevoli; Gli utenti di GCC devono fare riferimento alle istruzioni di collegamento per sistemi operativi Unix per da utilizzare per le opzioni di riga di comando appropriate .