2011-12-13 5 views
54

La risposta a questa domanda Why can't clang with libc++ in c++0x mode link this boost::program_options example? afferma "È necessario rigenerare boost utilizzando clang ++ -stdlib = libC++."Come compilare/collegare Boost con clang ++/libC++?

Sto usando MacOS Lion con clang v3.0. Come posso creare Boost v1.48.0 usando clang e collegandolo a libC++?

Aggiornamento: ho creato un file didall'utente config.jam con il seguente:

using clang-darwin 

... che si baserà Boost con clangore invece di gcc. Come faccio a collegarmi con libC++ invece di libstdC++?

risposta

85

Non sapevo come fare neanche questo. Ma dopo rovistando here, e tentativi ed errori:

$ ./b2 clean 
$ ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" 

Avrai un sacco di avvertimenti. E la libreria dei segnali non riuscirà a creare a causa di LWG 2059. Ma per il resto I penso che funzioni.

+2

Sì, funziona! Grazie. –

+0

Solo per aggiungere, boost :: signals2 ('# include ') ha un'API simile a boost :: signal ed è solo header, quindi non essere in grado di costruire segnali potrebbe non essere così male. –

+0

E 'solo boost: il segnale non viene costruito? Penso che mi manchi un sacco di varianti quando la compilazione completa –

15

Un'altra opzione è quella di utilizzare Homebrew:

brew install boost --c++11 

per ottenere informazioni su tutte le opzioni usano:

brew info boost 
+2

Questo link contro 'libC++' invece di 'libstdC++'? –

+0

se clang è disponibile collega con libC++. –

+1

Ho eseguito "brew install boost --C++ 11" seguito da "otool -L /usr/local/Cellar/boost/1.57.0/lib/libboost_regex-mt.dylib" e posso confermare che Boost sta ora collegando libC++. Grazie! –