Xmakeの共通API
序文
前回の記事では、Xmake の基本的なコマンドを紹介しましたが、Xmake コマンドを使用してプロジェクトをビルドすることは、基本的に g++ を使用して直接ビルドするのと同等であるため、プロジェクトが比較的単純な場合にのみコマンドを使用してビルドすることを選択できますが、プロジェクトがより複雑な場合は、xmake.lua を使用してプロジェクトのビルド プロセスを構成できます。
1. 共通APIの紹介
Xmake の初心者にとって、いくつかの簡単な API を学べば、プロジェクトを構成するのは非常に便利です。その中で、最もよく使用される API は次のとおりです。
set_kind
: ターゲットタイプを設定しますadd_files
: コンパイルが必要なソース ファイル/静的ライブラリを追加しますadd_links
: リンクする必要があるダイナミック ライブラリを追加しますadd_includedirs
: ヘッダー ファイルの検索パスを追加しますadd_linkdirs
: 動的ライブラリ検索パスを追加しますadd_ldflags
: リンクパラメータを追加しますadd_cxxflags
: C++ コンパイル オプションを追加します。add_cflags
: C コンパイラ オプションを追加しますadd_cxflags
: C/C++ コンパイル オプションを追加します。
2. APIの利用
Xmake を使用して新しく作成されたプロジェクトでは、Xmake は xmake.lua を直接作成します。その内容は次のとおりです。
add_rules("mode.debug", "mode.release")
target("hello")
set_kind("binary")
add_files("src/*.cpp")
その内、add_rules
デバッグモードとリリースモードが設定されるビルドモードの設定です。
set_kind
ここではコンパイル対象がバイナリファイルであることを指定し、プログラムを実行できるようにします。
add_files
すべての cpp ファイル ヘッダーを src の下に追加し、add_files
ワイルドカードをサポートします
以下では、構築における要件がこれらの API を通じてどのように実現されるかを説明します。
1. コンパイルされたソースファイルを追加します
上の例のように、ソース ファイルをコンパイル スコープに追加する必要がある場合は、add_files
ファイルを追加するだけで済みます。add_files
サポートされているファイル タイプは次のとおりです。
サポートされているソース ファイルの種類 | 説明 |
---|---|
.c/.cpp/.cc/.cxx | C++ファイル |
.s/.S/.asm | アセンブリファイル |
。うーん | objcファイル |
。迅速 | 迅速なファイル |
。行く | ファイルを成長させる |
.o/.obj | オブジェクトファイル |
.a/.lib | 静的ライブラリ ファイル。ライブラリはターゲット プログラムに自動的にマージされます。 |
.rc | msvcリソースファイル |
.manifest | Windowsマニフェストファイル |
.dll | Windows エクスポート ファイル |
.ld/.lds | gcc/clang のリンカー スクリプト ファイル |
.map/.ver | gcc/clang のバージョン スクリプト ファイル |
このうち、ワイルドカード * は現在のディレクトリ内のファイルと一致することを意味し、** は複数レベルのディレクトリ内のファイルと一致することを意味します。
2. ヘッダーファイルの検索パスを追加
ヘッダーファイルの検索パスを追加する場合は、それを使用することもできますが、またはインターフェイスadd_includedirs
を介して直接設定することも可能です。add_cxflags
add_mxflags
3. ダイナミックライブラリを追加する
ダイナミック ライブラリをリンクする必要がある場合は、add_links
からダイナミック ライブラリを追加できます。ここで追加する必要があるダイナミック ライブラリは、先頭の lib とサフィックス .so を削除する必要があります。
4. 動的ライブラリ検索パスを追加する
add_linkdirs
を渡すことでダイナミック ライブラリの検索パスを追加し、 を 渡すことでヘッダー ファイルの検索パスを追加しますadd_includedirs
。
5. 外部パッケージの追加
Xmake はadd_requires
依存パッケージの追加をサポートしています。バージョン番号を追加してパッケージのバージョンを制限したり、バージョン番号を記述せずに最新バージョンを使用したりできます。通常は、あまり複雑な使用法は必要ありません。
add_requires("tbox 1.6.*", "pcre 8.x", "libpng ^1.18")
add_requires("libpng ~1.16", "zlib 1.1.2 || >=1.2.11 <1.3.0")
add_requires("tbox", "libpng", "zlib")
6. Xmake設定の継承
ここで言う継承とは、フォルダーに xmake によって管理される複数のプロジェクトが含まれている場合、親ディレクトリーにヘッダーを追加するなどして、親ディレクトリーの xmake 構成がサブディレクトリーの xmake プロジェクトに継承されることを意味します。 ファイル検索add_includedirs
パスを使用すると、サブディレクトリ内の項目を繰り返し追加する必要がなくなります。より高度な使用法には、グローバル変数、マクロ定義などの定義が含まれ、プロジェクト管理が大幅に容易になります。
hello
├── src
│ ├── main.cpp
│ └── subhello
│ ├── src
│ │ └── main.cpp
│ └── xmake.lua
└── xmake.lua
Xmake の初心者ユーザーは、上記の API を使用して通常のプロジェクトの構築を完了できます。プロジェクトがより複雑な場合は、より高度な使用法が必要になる場合があります。より 複雑な使用法については、Xmake の公式ドキュメントを参照してください。