このバージョンでは、主にC ++ 20個のモジュールは、実験的にサポートしたために、多くの新機能が欠けている、現在多くの経験を向上させることに加えて、打ち鳴らす/ MSVCコンパイラサポートしており、いくつかの安定性を向上させます。
また、このバージョンはサポートsocket.ioを追加し、リモートコンパイルの次バージョン、およびその後の分散コンパイルのために準備するために、コルーチンIOスケジューリング支援対応します。
新機能導入します
C ++ 20個のモジュール
C ++のモジュールは正式に、ドラフトC ++ 20に組み込まれMSVCと基本的に実現した打ち鳴らすされているモジュール-tsがサポートし、++ 20フィート離れた私たちからCに近い、xmakeはC ++モジュールに始まったばかりサポートの事前に十分。
現在は完全に達成するために構築したモジュール-TSのMSVC /打ち鳴らすをxmake支えてきた、とgccのために、なぜならそのCXX-モジュールの分岐がまだ開発中です、まだ正式にマスターを入力していない、私は変更履歴の内側を見て、フラグがまだ関連常に変化し、気持ちが一時的にサポートされていないので、ここでは、安定していません。
xmake関連の進捗C ++モジュールについて、以下を参照してください。https://github.com/xmake-io/xmake/pull/569
こんにちはモジュール
関連するプレゼンテーションC ++モジュールについて、私は主にここでは、言うことはありませんxmake下の単純な例では、私たち最初の表情を投影し、C ++モジュールをビルドする方法について説明します,:
target("hello")
set_kind("binary")
add_files("src/*.cpp", "src/*.mpp")
上記支持xmake.luaが構築されているC ++モジュールファイル記述、hello.mpp
モジュールのファイルです。
#include <cstdio>
export module hello;
using namespace std;
export namespace hello {
void say(const char* str) {
printf("%s\n", str);
}
}
メインプログラムはmain.cppには、ハローモジュールを使用することです:
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
、そして次はMSVCで*.ixx
統一クロスコンパイラモジュールを製造するための、プロジェクトはので、ここで、参照は非常に非友好的であるBUILD2統一、推奨される方法内部*.mpp
モジュールプロジェクトインターフェイスコマンドxmakeの下で規制するために、接尾辞を。
もちろん、これはまた、サポートは推奨ネーミングをxmake、とのために*.ixx
、 *.cppm
そのような拡張機能として、xmakeもサポートと完全な互換性があり、またために直接添加することができるadd_files
行きます。
その他の例
:xmakeプロジェクトでも、以下を参照することができ、C ++モジュール関連、興味のある学生とのプロジェクトの例の多くを建て、C ++モジュールの例
インタフェースの変更set_toolchain
実際には、2.2.9より前のバージョンが存在し、主に異なるコンパイラツールチェーンを目標設定するために使用されている。このインタフェースをset_toolchain add_tools
とset_tools
同じに対処するために2つのインタフェースを行うが、これらの二つのインターフェースと名の使用及び仕様は非常に一貫性がない、そうしましたいくつかの調整は、より良いset_toolchain設定ツールチェーンには、この新しいインターフェイスを変更します。
以下のために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まだデフォルトの設定を使用しながら、TEST1をTEST2をコンパイルするために、特定のコンパイラを使用して、打ち鳴らす-5.0提供される唯一の特別なコンパイラ。
いくつかのコンパイラは、通常、コンパイラの例名前で知られていない認識処理xmakeその結果、不規則なファイル名の、我々はまた、のようなツールチップの名前を追加することができます。
set_toolchain("cc", "gcc@$(projectdir)/tools/bin/mipscc.exe")
以上の説明はxmake GCCをコンパイルするように通過させるパラメータmipscc.exe Cコンパイラ、および迅速な治療として提供されます。
ソケットIO
これは最初のインターフェース、サポートIOスケジューリングLUAコルーチン、IO(後者はまた、パイプのスケジューリングをサポートしてプロセスをサポートしています)、主にxmake自身の使用のために、フォローアップのための高同時読み取りと書き込みを達成達成されていますリモートコンパイルコンパイルと準備を分散し、我々はユーザー自身の使用を開いていないが、他のフォローアップ完璧後、ユーザーはまた、独自のプラグイン内部IOソケットを介して、いくつかのサービスプログラムを行うことができ、開かれることになります。
ただし、ユーザーがシナリオを使用することが多くありませんが、単にビルドツールすべてxmakeた後、ユーザーはめったに自分のIO通信を行いません。
アップデート
新機能
- #569:C ++モジュールを追加しました実験的なサポート
- 追加
xmake project -k xmakefile
Builderを - 620:グローバル追加
~/.xmakerc.lua
プロファイルを、すべてのローカルのプロジェクトのために有効になります。 - 593:追加
core.base.socket
次のステップをコンパイルするリモート分散コンパイラを準備するモジュール。
改善します
- #563:別のルールに外れ、再構成可能な論理構造、言語固有の構築物は行きます
- #570:改良されたQtの構築、
qt.application
に分割qt.widgetapp
し、qt.quickapp
2つの建設ルール - #576:の使用
set_toolchain
の代替add_tools
とset_tools
古いあいまいなインターフェイスを解決するには、設定がより理解しやすい方法を提供します - 改善された
xmake create
テンプレートプロジェクトを作成します。 - #589:タスクのデフォルトのビルド番号の改善、全体的なコンパイル速度、最大速度にCPUコアをフルに活用します
- #598:改善された
find_package
MacOSの上のファイルを見つけるために.tbdシステムライブラリのサポート - #615:他のアーチのインストールと使用をサポートし、コナンのIOSのパッケージ
- #629:改善hash.uuidとUUID V4を達成
- #639:引数パーサがサポートの改善
-jN
スタイル質量の参加を