2013-04-05 6 views
5

Die neueste LLVM libc++ 3.3 von SVN mit einem CMakeLists.txt kommt. Ich bin ein CMake-Neuling, aber gestern habe ich genug gelernt, um libc++ check-out auf einem RHEL 6.4 x86_64-Host erstellen zu können.Gebäude sowohl statische als auch gemeinsam genutzte Bibliotheken für LLVM libC++ 3.3

Darüber hinaus konnte ich genug CPack verwandte Befehle in CMakeLists.txt hinzufügen, um eine libcxx-3.3.svn-0.el6.x86_64.rpm zu generieren. Aber sehr wahrscheinlich, weil ich neu bei CMake bin, kann ich nicht gleichzeitig eine statische und eine gemeinsame Lib erstellen.

Ja. Ich überprüfte Is it possible to get CMake to build both a static and shared version of the same library?. Aber anstatt die add_library und listen alle Quelldateien, würde Ich mag den Ansatz von libc++ ‚s beschäftigt verwenden CMakeList.txt - mit APPEND.

Ich konnte eine statische lib erzeugen, indem sie mit OFF die ON in Zeile 40 unter Ersetzen eines statischen lib

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

zu bauen Oder ich könnte es lassen, wie eine gemeinsame lib ist und bauen.

Ich bastelte auch mit den folgenden Zeilen und eliminierte die NOT oder kommentiert Zeilen 232 und 233 zum Beispiel. Aber unabhängig davon, was ich versuchte, konnte ich einfach nicht die statische lib dazu bringen, zusammen mit einer gemeinsamen lib zu bauen.

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

Wie kann ich die CMakeList.txt Datei einstellen, um beide zur gleichen Zeit zu bauen?

Antwort

3

OK. Ich entschied mich, die "versuchte und wahre" Methode zu verwenden, einen add_library Befehl mit allen *.cpp aufgeführten zu verwenden. Es funktioniert OOTB, also halte ich es für eine Lösung.

Ich werde dieses Problem wieder besuchen wieder, sobald ich Zeit habe meine Kenntnisse im Umgang mit CMake zu verbessern.