Holen Sie sich Apple Clang-Version und entsprechende Upstream-LLVM-Version
Möchte ich verstehen, welche version von clang Apple installiert ist, auf meinem macbook, um zu sehen, mit c++11 und/oder c++14 features zur Verfügung stehen.
Ich tippte den Befehl:
clang --version
//----response
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
Thread model: posix
Aber ich bin nicht in der Lage zu verstehen, was (clang-700.1.76)
bedeuten.
Wie kann ich umwandeln Sie diesen code, um das Geräusch version?
Dies ist der Ort, wo Sie überprüfen könnten, c++ - features, die in clang version http://clang.llvm.org/cxx_status.html
InformationsquelleAutor der Frage user72708 | 2015-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den (Apple) - Versionsnummer des Compilers ist meist nutzlos, da Sie müssen auch prüfen, ob dein code kompiliert wird mit
libstdc++
oder mitlibc++
(oder andere standard-Bibliothek) - und welche version von denen.Wenn Sie möchten, um zu testen, für Sprache oder Bibliothek-Funktionen, ist es besser, zu prüfen, andere Werte definiert, z.B.
__cplusplus
__cpp_constexpr
__cpp_variadic_templates
usw. Es ist nicht perfekt, aber es scheint besser zu arbeiten, (wenn Sie möchten, Portabilität) ist nach meiner Erfahrung und der Unterstützung aus allen wichtigen compiler verbessert.Jeder C++ - standard-version definiert einen Wert für
__cplusplus
einige Compiler verwenden Zwischenwerte zu sagen: "wir haben bereits damit begonnen, die auf C++14, aber wir sind noch nicht da". Verwenden>=
zu testen, wenn nötig.Die anderen feature-test Makros sind ähnlich, Sie finden die aktuelle version auf N4440. Nicht alle Compiler implementieren N4440, obwohl.
InformationsquelleAutor der Antwort Daniel Frey
Hier ist die beste Liste die ich gefunden habe, bezieht sich apples clang-Versionen mit dem LLVM-Versionen:
https://trac.macports.org/wiki/XcodeVersionInfo
Früheren Versionen verwendet, um zu sagen, was LLVM-version entsprach, aber ab 7.0, Apple beschlossen, nicht mehr tun. Sie selbst definieren die
__clang_version__
und zugehörige Präprozessor-Makros, um anzuzeigen, die Apple-version und-Nummer, nicht die LLVM-version. Sie sind also unbrauchbar für diese als gut.Leider sieht es aus wie der einzige Weg, um zu sehen, wenn Sie ein feature ist, um zu versuchen und prüfen, ob es funktioniert. z.B. 7.0.2 immer noch nicht über die OpenMP-standardmäßig aktiviert (obwohl es aktivieren-in der Lage), so dass ich denke, es ist immer noch 3.6, nicht 3.7 noch.
InformationsquelleAutor der Antwort Mike Jarvis
Als angedeutet durch
pkolbus
Sie können sich an der/src/CMakeLists.txt
zu erraten, die entsprechenden Clang version. Zum Beispiel, Apple Clang 800.0.38 und 800.0.42.1 beide scheinen basierend auf Clang 3.9.0 nachInformationsquelleAutor der Antwort Franklin Yu
Wikipedia Xcode Seite hat eine Karte von Apple LLVM-Versionen (bis mindestens AppleClang 800.0.42.1). Die LLVM-Spalte, die den open-source-LLVM/Clang-version. Aus dieser kann man ein Sprach-feature in cppreference ist Diagramm der compiler-Unterstützung für Sprachfeatures.
InformationsquelleAutor der Antwort John McFarlane
Kann man versuchen zu kompilieren - Datei mit --verbose option.
Zum Beispiel:
c++ --verbose -c test1.cpp
Ausgedruckt wird LLVM svn-version (3.7.0 in unserem Beispiel)
InformationsquelleAutor der Antwort user8308676
Wenn Sie die Zeichenfolgen auf den Befehl compiler erhalten Sie möglicherweise die LLVM-version.
Zum Beispiel, wenn man die clang-version, die identifiziert sich selbst als Apple LLVM version 7.0.2 (clang-700.1.81)die Ausgabe von strings wird diesen Wert haben:
Diese scheint nicht zu funktionieren mit der version Apple LLVM version 7.3.0 (clang-703.0.29)
InformationsquelleAutor der Antwort user2956983