CMakeを使用したLLVMの構築

1.はじめに

CMAKEは、クロスプラットフォームのビルドジェネレーターツールです。cmakeはプロジェクトをビルドせず、llvmのビルドに必要なビルドツール(gnu make、Visual Studioなど)が必要とするファイルを生成します。

新規の方は「LLVMシステム入門」のページから始めてください。このページは、古い構成/生成システムから移動した既存の参加者向けです。

機能するLLVMビルドの取得が本当に心配な場合は、クイックスタートセクションに進んでください。CMAKEを初めて使用する場合は、CMAKEの基本的な使用方法から始め、何をしているのかがわかったらクイックスタートセクションに戻ります。オプションと変数のセクションは、カスタムビルドのリファレンスです。cmakeの経験がある場合は、これが推奨される開始点です。

このページは、llvm cmakeによって構築されたユーザー向けです。llvm cmakeビルドシステムの変更に関する情報を探している場合は、cmakeのプライマーのページをご覧ください。cmake言語の基本的な概要があります。

2.クイックスタート

ここでは、非対話型のcmakeインターフェイスであるコマンドラインを使用します。

  • cmakeをダウンロードしてインストールします。最小要件はバージョン3.4.3です。
  • シェルを開きます。開発ツールは、パス環境変数を介してこのシェルからアクセスできる必要があります。
  • ビルドディレクトリを作成します。llvmは、ソースディレクトリでのコンパイルをサポートしていません。このディレクトリに移動します。
$ mkdir mybuilddir
$ cd mybuilddir
  • シェルでこのコマンドを実行し、パス/ to / llvm / source / rootをllvmソースツリーのルートパスに置き換えます。
$ cmake path/to/llvm/source/root

CMakeは開発環境を検出し、一連のテストを実行して、LLVMの構築に必要なファイルを生成します。CMakeはすべてのビルドパラメータにデフォルト値を使用します。変更可能な生成パラメータのリストについては、「オプションと変数」を参照してください。

CMakeがツールセットを検出できない場合、または環境が十分に健全ではないと考える場合、この操作は失敗する可能性があります。この例では、使用する予定のツールセットがシェルからアクセスできる唯一のツールセットであること、およびシェル自体が開発環境に適したツールセットであることを確認してください。たとえば、PATH環境変数を介してアクセスできるPOSIXシェルがある場合、CMakeはMinGWメイクファイルのビルドを拒否します。CMakeに特定のビルドツールを強制的に使用させることができます。手順については、以下の使用法のセクションを参照してください。

  • CMakeの実行が終了したら、IDEプロジェクトファイルを引き続き使用するか、ビルドディレクトリからビルドを開始します。
$ cmake --build .

--buildオプションは、基本となるビルドツール(make、ninja、xcodebuild、msbuildなど)を呼び出すようにcmakeに指示します。

もちろん、基礎となるビルドツールは直接呼び出すことができますが、-buildオプションは移植可能です。

  • LLVMのビルドが完了したら、ビルドディレクトリからインストールします。
$ cmake --build . --target install

--buildオプションに加えて、-targetオプションには、インストールターゲットをビルドするようにcmakeに指示するインストールパラメータも含まれます。

インストール中にcmake_installを呼び出すことにより、別のインストールプレフィックスを設定できます。ビルドディレクトリに生成されたcmakeスクリプト:

$ cmake -DCMAKE_INSTALL_PREFIX=/tmp/llvm -P cmake_install.cmake

3.基本的なCMakeの使用法

このセクションでは、CMakeの基本的な側面について説明します。これは、日常の使用で必要になる場合があります。

CMakeには、htmlファイルの形式で提供される多数のドキュメントが付属しており、CMake実行可能ファイル自体を通じてオンラインヘルプを提供します。その他のヘルプオプションについては、cmake --helpを実行してください。

CMakeでは、ビルドツール(GNU make、Visual Studio、Xcodeなど)を指定できます。コマンドラインで指定されていない場合、CMakeは環境に基づいて使用するビルドツールを推測しようとします。ビルドツールが決定されると、CMakeは対応するジェネレーターを使用して、ビルドツールのファイル(たとえば、makefile、Visual Studio、Xcodeプロジェクトファイル)を作成します。コマンドラインオプション-G "ジェネレーターの名前"を使用して、ジェネレーターを明示的に指定できます。システムで使用可能なジェネレーターのリストを表示するには、次を実行します

$ cmake --help

これにより、ヘルプテキストの最後にジェネレータ名がリストされます。

ジェネレータの名前は大文字と小文字が区別され、スペースが含まれる場合があります。このため、cmake -helpの出力にリストされているように、引用符でそれらを入力する必要があります。たとえば、Visual Studio 12の特定のプロジェクトファイルを生成するには、次のコマンドを実行します。

$ cmake -G "Visual Studio 12" path/to/llvm/source/root

特定の開発プラットフォームでは、複数の十分なジェネレーターが存在する場合があります。Visual Studioを使用する場合、「NMake makefile」はNMakeでビルドできるジェネレーターです。デフォルトでは、CMakeは開発環境でサポートされている最も具体的なジェネレーターを選択します。別のジェネレータが必要な場合は、CMakeに-Gオプションを使用するように指示する必要があります。

4.オプションと変数

変数は、それらがどのように構築されるかをカスタマイズします。オプションはブール変数で、可能な値はON / OFFです。オプションと変数は、CMakeコマンドラインで次のように定義されます。

$ cmake -DVARIABLE=value path/to/llvm/source

変数を設定して、最初のCMake呼び出しの後にその値を変更できます。変数を未定義にすることもできます:

$ cmake -UVARIABLE path/to/llvm/source

変数はCMakeキャッシュに格納されます。これはcmakeによって生成されたビルドディレクトリのルートディレクトリに格納されているCMakeCache.txtという名前のファイルです。自分で編集することはお勧めしません。

変数はCMakeキャッシュにリストされています。このドキュメントの後半では、変数の名前と型はコロンで区切られています。CMakeコマンドラインで変数と型を指定することもできます。

$ cmake -DVARIABLE:TYPE=value path/to/llvm/source

5.頻繁に使用されるCMake変数

以下は、頻繁に使用されるCMake変数と、簡単な説明およびllvm固有の注意事項です。完全なドキュメントについては、CMakeのマニュアルを参照するか、CMake --help-variable VARIABLE_NAMEを実行してください。

CMAKE_BUILD_TYPE:文字列

トークンベースのジェネレーターの生成タイプを設定します。可能な値は、Release、Debug、RelWithDebInfo、およびMinSizeRelです。Visual StudioなどのIDEを使用している場合は、IDE設定を使用してビルドタイプを設定する必要があります。ReleaseとRelWithDebInfoは、ほとんどのプラットフォームで異なるレベルの最適化を使用することに注意してください。

CMAKE_INSTALL_PREFIX:パス

「make install」を呼び出すか、「install」ターゲットをビルドするときにLLVMがインストールされるパス。

LLVM_LIBDIR_SUFFIX:文字列

ライブラリをインストールするディレクトリに追加のサフィックスを添付します。64ビットアーキテクチャでは、-DLLVM_LIBDIR_SUFFIX = 64を使用して、ライブラリを/ usr / lib64にインストールできます。

CMAKE_C_FLAGS:文字列

Cソースファイルをコンパイルするときに使用する追加のフラグ。

CMAKE_CXX_FLAGS:文字列

C ++ソースファイルをコンパイルするときに使用する追加のフラグ。

6. LLVM固有の変数

LLVM_TARGETS_TO_BUILD:字符串

ビルドするターゲットのリスト。セミコロンで区切るか、すべてを使用してすべてのターゲットをビルドします。大文字と小文字が区別されます。デフォルトはすべてです。例:-DLLVM_TARGETS_TO_BUILD = "X86; PowerPC"。

LLVM_BUILD_TOOLS:BOOL

LLVMツールをビルドします。デフォルトはオンです。いずれの場合も、各ツールを構築するという目標が生成されます。ツールのターゲットを呼び出すことにより、ツールを個別にビルドできます。たとえば、makefileベースのシステムを使用して、ビルドディレクトリのルートディレクトリでmake llvm-asを実行することにより、llvm-asをビルドできます。

LLVM_INCLUDE_TOOLS:BOOL

LLVMツールのターゲットを生成します。デフォルトはオンです。このオプションを使用して、LLVMツールのビルドターゲットの生成を無効にすることができます。

LLVM_INSTALL_BINUTILS_SYMLINKS:BOOL

binutilsツールの名前から対応するLLVMツールへのシンボリックリンクをインストールします。たとえば、arはシンボルをllvm-arにリンクします。

LLVM_BUILD_EXAMPLES:BOOL

LLVMの構築例。デフォルト値はオフです。いずれの場合も、各例を構築するための目標が生成されます。詳細については、上記のLLVM_BUILD_TOOLSドキュメントを参照してください。

LLVM_INCLUDE_EXAMPLES:BOOL

LLVMサンプルのビルドターゲットを生成します。デフォルトはオンです。このオプションを使用して、LLVMの例を生成するビルドターゲットを無効にすることができます。

LLVM_BUILD_TESTS:BOOL

LLVM単体テストをビルドします。いずれの場合も、各単体テストを構築するという目標が生成されます。ユニットテストで定義された目標を使用して、ADTTests、IRTests、SupportTestsなどの特定のユニットテストを構築できます(ユニットテストの完全なリストを取得するには、ユニットテストサブディレクトリでadd_llvm_unittestを検索してください)。ターゲットの単体テストを使用して、すべての単体テストを作成できます。

LLVM_INCLUDE_TESTS:BOOL

LLVM単体テスト生成のターゲットを生成します。デフォルトはオンです。このオプションを使用して、LLVM単体テストのビルドターゲットの生成を無効にすることができます。

LLVM_BUILD_BENCHMARKS:BOOL

ベンチマークをデフォルトのターゲットリストに追加します。デフォルトはオフです。

LLVM_INCLUDE_BENCHMARKS:BOOL

LLVMベンチマークのビルドターゲットを生成します。デフォルトはオンです。

LLVM_APPEND_VC_REV:BOOL

埋め込みバージョン管理のリビジョン情報(svnリビジョン番号またはGitリビジョンID))。バージョン情報は、llvm / include / llvm / Support / vcsupdate.hのLLVM_REVISIONマクロによって提供されます。リビジョン情報を必要としないGit開発者は、このオプションを無効にして、ブランチの切り替え後にほとんどのバイナリの再リンクを回避できます。デフォルトはオンです。

43件の元の記事を公開 いいね23 30,000以上

おすすめ

転載: blog.csdn.net/zhang14916/article/details/89498689