2013-04-05 9 views
5

L'ultimo LLVM libc++ 3.3 di SVN viene fornito con CMakeLists.txt. Sono un newbie di CMake, ma ieri ho studiato abbastanza per essere in grado di creare il check-out libc++ su un host RHEL 6.4 x86_64.Creazione di librerie sia statiche che condivise per LLVM libC++ 3.3

Inoltre, sono stato in grado di aggiungere abbastanza comandi relativi a CPack in detto CMakeLists.txt per generare un libcxx-3.3.svn-0.el6.x86_64.rpm. Ma molto probabilmente per essere nuovo a CMake, non riesco a costruire una libreria statica e una lib condivisa allo stesso tempo.

Sì. Ho recensito Is it possible to get CMake to build both a static and shared version of the same library?. Ma, invece di usare lo add_library e enumerare tutti i file sorgente, vorrei usare l'approccio impiegato da 's CMakeList.txt - usando APPEND.

ho potuto generare un lib statica sostituendo la ON in linea 40 sotto con OFF per costruire un lib statica

40 option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON) 
41 

o potrei lasciare così com'è e costruire un lib condivisa.

Ho anche armeggiato con le seguenti linee, eliminando il NOT o commentando le righe 232 e 233 per esempio. Ma a prescindere da quello che ho provato, non riesco proprio a far sì che la libreria statica costruisca insieme a una lib condivisa.

232 if (NOT LIBCXX_ENABLE_SHARED) 
233 list(APPEND LIBCXX_CXX_FEATURE_FLAGS -D_LIBCPP_BUILD_STATIC) 
234 endif() 

Come posso modificare il file CMakeList.txt in modo da costruire entrambi allo stesso tempo?

risposta

3

OK. Ho deciso di utilizzare il metodo "provato e vero" per utilizzare un comando add_library, con tutti gli elementi elencati in *.cpp. Funziona OOTB, quindi lo considero una soluzione.

Rivederò nuovamente questo problema una volta che avrò il tempo di migliorare le mie conoscenze con CMake.