「clang」と「Apple clang」の違いは何ですか? 質問する

「clang」と「Apple clang」の違いは何ですか? 質問する

私はclangが付属するOS X 10.8.2にアップグレードしました。出力は次のようにclang -vなります。

Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix

macports では、clang のいくつかの異なるバージョンが利用可能です ( port search clang)。

clang @2.9 (lang)
    C, C++, Objective C and Objective C++ compiler
clang-2.9 @2.9 (lang)
    C, C++, Objective C and Objective C++ compiler
clang-3.0 @3.0 (lang)
    C, C++, Objective C and Objective C++ compiler
clang-3.1 @3.1 (lang)
    C, C++, Objective C and Objective C++ compiler
clang-3.2 @3.2-r164372 (lang)
    C, C++, Objective C and Objective C++ compiler

OS X に付属する「Apple clang 4.1」は、macports の clang-3.1 と (ほぼまたはまったく) 同じですか?

また、3.2 と 3.1 の違いは何ですか?

ベストアンサー1

Apple は、独自のバージョンの clang を Xcode に同梱しています。つまり、Apple は clang のビルド方法 (ビルド時に使用する設定、有効/無効にするオプション機能など) を決定し、ビルド前に clang のソース コードを必要に応じて修正することもできます。clang は Apache 2.0 ライセンスでリリースされているため、Apple は変更内容をオープン ソースにしたり、公開したりする必要はなく、変更内容、変更方法、変更理由を誰かに伝える必要もありません。

ただし、Apple は GitHub に独自のプロジェクトフォークを持っています。これはオリジナルの LLVM リポジトリです。

https://github.com/llvm/llvm-project

そしてこれが Apple からのフォークです:

https://github.com/apple/llvm-project

したがって、何か変更があった場合は、そこに変更内容が記載されている可能性があります。

デフォルトバージョンでは何も表示されません。

 # clang --version
Apple clang version 15.0.0 (clang-1500.1.0.2.4)

これは Apple の内部バージョン スキームに過ぎませんが、Wikipedia にはこれらのバージョンを LLVM リリース バージョンにマッピングするリストがあります。

https://en.wikipedia.org/wiki/Xcode#ツールチェーンバージョン

このリストを更新するには、Apple フォークで適切なリリース タグを見つけて、 を確認しますCMakeLists.txt。このファイルにより、LLVM のバージョンが明らかになります。

if(NOT DEFINED LLVM_VERSION_MAJOR)
  set(LLVM_VERSION_MAJOR 16)
endif()
if(NOT DEFINED LLVM_VERSION_MINOR)
  set(LLVM_VERSION_MINOR 0)
endif()
if(NOT DEFINED LLVM_VERSION_PATCH)
  set(LLVM_VERSION_PATCH 0)
endif()

https://github.com/apple/llvm-project/blob/swift-5.9-DEVELOPMENT-SNAPSHOT-2023-10-09-a/llvm/CMakeLists.txt

これは現在の Xcode 15.1 Beta 2 タグであり、CMake ファイルによると LLVM 16.0.0 に基づいていることがわかります。

おすすめ記事