このバージョンには多くの新機能はありません。主にc20モジュールの実験的なサポートを提供します。現在、clang / msvcコンパイラをサポートしています。さらに、多くのユーザーエクスペリエンスを向上させ、ある程度の安定性を向上させます。
さらに、このバージョンでは、対応するコルーチンioのsocket.ioサポートとスケジューリングサポートが追加され、リモートコンパイルとそれに続く分散コンパイルの次のバージョンの準備が整います。
新機能の紹介
c20モジュール
cモジュールはc20ドラフトに正式に含まれ、msvcとclangは基本的にモジュールのサポートを実現しました-ts、c 20の足跡がどんどん近づいてきているので、xmakeもcモジュールを事前にサポートし始めています。
現在、xmakeはmsvc / clangのmodules-tsの実装を完全にサポートしています。gccの場合、cxx-modulesブランチはまだ開発中であるため、正式にはマスターに入りませんでした。内部の変更ログと関連するフラグを確認しました。まだそこにあります。絶えず変化していて、まだ安定していないように感じますので、当面はサポートしていません。
xmakeからcモジュールへの関連する進捗状況については、https://github.com/xmake-io/xmake/pull/569を参照してください。
こんにちはモジュール
関連するcモジュールの紹介についてはあまり説明しません。ここでは、主にxmakeでcモジュールプロジェクトをビルドする方法を紹介します。最初に簡単な例を見てみましょう。
target("hello")
set_kind("binary")
add_files("src/*.cpp", "src/*.mpp")
上記は、cモジュールファイルの構築をサポートするxmake.luaの説明であり、その中にhello.mpp
はモジュールファイルがあります。
#include <cstdio>
export module hello;
using namespace std;
export namespace hello {
void say(const char* str) {
printf("%s\n", str);
}
}
また、main.cppは、helloモジュールを使用するメインプログラムです。
import hello;
int main() {
hello::say("hello module!");
return 0;
}
次に、xmakeを実行してこのプログラムをビルドします。
ruki:hello ruki$ xmake
[ 0%]: ccache compiling.release src/hello.mpp
[ 50%]: ccache compiling.release src/main.cpp
[100%]: linking.release hello
build ok!
非常に単純ですか、xmakeはすべての詳細なロジックを内部で処理します。開発者にとっては、モジュールファイル*.mpp
をソースファイルとして追加するだけです。
モジュールインターフェースファイル
上記*.mpp
は、xmakeが推奨するモジュールインターフェイスファイルの命名です。実際、モジュールファイルのデフォルトのサフィックスは、さまざまなコンパイラによって統合されていません*.cppm
。clangおよびmsvcの下にあり*.ixx
ます。これは、コンパイラ間で統合されるモジュールを作成するためのものです。プロジェクトは非常に使いにくいため、ここではbuild2で推奨される方法を参照し、統一された*.mpp
サフィックスを使用して、xmakeでモジュールプロジェクトインターフェイスのコマンドを標準化します。
もちろん、これはまた、サポートは推奨ネーミングをxmake、とのために*.ixx
、*.cppm
そのような拡張機能として、xmakeもサポートと完全な互換性があり、またために直接添加することができるadd_files
行きます。
その他の例
xmakeプロジェクトに組み込まれているcモジュールに関連するプロジェクトの例もたくさんあります。興味のある方は以下を参照してください。cモジュールの例
set_toolchainインターフェースの変更
set toolchain interfaceは主に、ターゲットに異なるコンパイルツールチェーンを設定するために使用されます。2.2.9より前のバージョンには、実際には同じことを処理する2つのインターフェイス`add tools 和
set tools`がありますが、これら2つのインターフェイスの名前と使用法は一貫していません。仕様と非常に一貫しているため、セットツールチェーンのこの新しいインターフェイスを使用してツールチェーンをより適切にセットアップするために、いくつかの調整と変更が行われました。
以下のためにadd_files("*.c")
追加のソースコードファイル、デフォルトでは、コンパイラツールは、最もよく一致していることをシステムがコンパイルするために呼び出されます、またはxmake f --cc=clang
手動で変更を通じてコマンドが、これらは世界的にすべてのターゲットのターゲットに影響します。
特別な要件がある場合は、現在のプロジェクトの特定のターゲットに対して、別のコンパイラ、リンカ、またはコンパイラの特定のバージョンを指定する必要があります。現時点では、次のようにこのインターフェイスを使用できます。
target("test1")
add_files("*.c")
target("test2")
add_files("*.c")
set_toolchain("cc", "$(projectdir)/tools/bin/clang-5.0")
上記の説明は、test2ターゲットのコンパイラーに特別な設定を行うだけです。特定のclang-5.0コンパイラーを使用してtest2をコンパイルしても、test1は引き続きデフォルト設定を使用します。
不規則でxmakeが既知のコンパイラ名として認識および処理されない一部のコンパイラファイル名については、次のようなツール名プロンプトを追加することもできます。
set_toolchain("cc", "gcc@$(projectdir)/tools/bin/mipscc.exe")
上記の説明では、mipscc.exeをcコンパイラとして設定し、xmakeにgccのパラメータ受け渡しメソッドとしてコンパイルするように求めています。
ソケットio
このインターフェースは最初に実装され、luaコルーチンのioスケジューリングをサポートし、高同時実行のio読み取りおよび書き込みを実現します(後者はプロセスとパイプのスケジューリングサポートもサポートします)。現在、主に後続のToのxmake自体に使用されています。リモートコンパイルと分散コンパイルの準備をします。一時的にユーザーが自分で使用することはできませんが、その後の改善後に開かれ、ユーザーは自分のプラグインのソケットioを介して一部のサービスプログラムを実行することもできます。
ただし、ユーザーが使用するシナリオはそれほど多くない場合があります。結局のところ、xmakeは単なるビルドツールであり、ユーザーが自分でio通信を実行できることはめったにありません。
コンテンツを更新する
新機能
- #569:cモジュールの実験的サポートを追加
xmake project -k xmakefile
ジェネレーターを追加- 620:
~/.xmakerc.lua
すべてのローカルプロジェクトに有効なグローバル構成ファイルを追加します。 - 593:
core.base.socket
モジュールを追加して、リモートコンパイルと分散コンパイルの次のステップに備えます。
改善する
- #563:構築ロジックをリファクタリングして、特定の言語の構築を独立したルールに分離します
- #570:改善されたQtの構築、2つの構築ルール
qt.application
への分割qt.widgetapp
qt.quickapp
- #576:の使用
set_toolchain
の代替add_tools
とset_tools
古いあいまいなインターフェイスを解決するには、設定がより理解しやすい方法を提供します xmake create
テンプレートプロジェクトの作成を改善する- #589:ビルドタスクのデフォルト数を改善し、CPUコアを最大限に活用して全体的なコンパイル速度を高速化します
- #598:
find_package
macOSで.tbdシステムライブラリファイルを検索するためのサポートを改善 - #615:他のarchおよびiosconanパッケージのインストールと使用をサポートする
- #629:hash.uuidを改善し、uuidv4を実装する
- #639:
-jN
スタイルパラメーターの受け渡しをサポートするようにパラメーターパーサーを改善
修正されたバグ
- #567:オブジェクトをシリアル化するときのメモリオーバーフローの問題を修正
- #566:リモート依存関係をインストールする際のリンク順序の問題を修正
- #565:vcpkgパッケージのPATH設定を実行する問題を修正
- #597:xmakerequireインストールパッケージに時間がかかりすぎる問題を修正
- #634:mode.coverage構築ルールを修復し、フラグ検出を改善します
https://tboox.org/cn/2019/12/21/xmake-update-v2.2.9/