2013-04-05 15 views
5

Najnowsza wersja LLVM libc++ 3.3 z SVN jest dostarczana z CMakeLists.txt. Jestem nowicjuszem CMake, ale wczoraj uczyłem się wystarczająco, aby móc zbudować checkout na libc++ na hoście RHEL 6.4 x86_64.Budowanie bibliotek statycznych i współdzielonych dla LLVM libC++ 3.3

Ponadto udało mi się dodać wystarczające polecenia związane z CPack we wspomnianym CMakeLists.txt, aby wygenerować libcxx-3.3.svn-0.el6.x86_64.rpm. Ale najprawdopodobniej z powodu nowości w CMake nie mogę jednocześnie utworzyć statycznej i udostępnionej biblioteki.

Tak. Recenzowałem Is it possible to get CMake to build both a static and shared version of the same library?. Ale zamiast korzystać z add_library i wyliczyć wszystkie pliki źródłowe, chciałbym użyć podejścia stosowanego przez libc++ 's CMakeList.txt - przy użyciu APPEND.

mogę wygenerować statyczny lib zastępując ON w linii 40 poniżej OFF zbudować statyczny lib

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

Albo mogę go zostawić jak jest i budować wspólną lib.

Też pomalowałem z następującymi liniami, eliminując na przykład linie 232 i 233 NOT lub linie komentarza out. Ale niezależnie od tego, co próbowałem, po prostu nie mogłem uzyskać statycznej lib do zbudowania razem z udostępnioną biblioteką.

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

Jak mogę dostosować plik CMakeList.txt tak aby zbudować zarówno w tym samym czasie?

Odpowiedz

3

OK. Postanowiłem użyć "wypróbowanej i prawdziwej" metody używania polecenia add_library, ze wszystkimi wymienionymi *.cpp. Działa OOTB, więc uważam to za rozwiązanie.

Będę ponownie odwiedzać ten problem ponownie, gdy będę miał czas, aby poprawić swoją znajomość z CMake.

Powiązane problemy