xmakeのv2.2.9のリリースの20個のモジュールのための新しいC ++の実験的サポート

このバージョンでは、主に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唯一のソースファイルとして。

モジュールインタフェースファイル

上記*.mppxmakeモジュールインタフェースファイル命名を推奨され、実際には、様々なコンパイラデフォルトのファイル拡張子のためのモジュールが均一でない、打ち鳴らす下にあり*.cppm、そして次はMSVCで*.ixx統一クロスコンパイラモジュールを製造するための、プロジェクトはので、ここで、参照は非常に非友好的であるBUILD2統一、推奨される方法内部*.mppモジュールプロジェクトインターフェイスコマンドxmakeの下で規制するために、接尾辞を。

もちろん、これはまた、サポートは推奨ネーミングをxmake、とのために*.ixx、  *.cppmそのような拡張機能として、xmakeもサポートと完全な互換性があり、またために直接添加することができるadd_files行きます。

その他の例

:xmakeプロジェクトでも、以下を参照することができ、C ++モジュール関連、興味のある学生とのプロジェクトの例の多くを建て、C ++モジュールの例

インタフェースの変更set_toolchain

実際には、2.2.9より前のバージョンが存在し、主に異なるコンパイラツールチェーンを目標設定するために使用されている。このインタフェースをset_toolchain add_toolsset_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 xmakefileBuilderを
  • 620:グローバル追加~/.xmakerc.luaプロファイルを、すべてのローカルのプロジェクトのために有効になります。
  • 593:追加core.base.socket次のステップをコンパイルするリモート分散コンパイラを準備するモジュール。

改善します

  • #563:別のルールに外れ、再構成可能な論理構造、言語固有の構築物は行きます
  • #570:改良されたQtの構築、qt.applicationに分割qt.widgetappし、qt.quickapp2つの建設ルール
  • #576:の使用set_toolchainの代替add_toolsset_tools古いあいまいなインターフェイスを解決するには、設定がより理解しやすい方法を提供します
  • 改善されたxmake createテンプレートプロジェクトを作成します。
  • #589:タスクのデフォルトのビルド番号の改善、全体的なコンパイル速度、最大速度にCPUコアをフルに活用します
  • #598:改善されたfind_packageMacOSの上のファイルを見つけるために.tbdシステムライブラリのサポート
  • #615:他のアーチのインストールと使用をサポートし、コナンのIOSのパッケージ
  • #629:改善hash.uuidとUUID V4を達成
  • #639:引数パーサがサポートの改善-jNスタイル質量の参加を

バグの修理

  • #567:シリアライズされたオブジェクトが表示される修正メモリリークの問題
  • #566:修正リンク順の問題は、リモート依存インストール
  • #565:修正ランタイムPATH設定問題vcpkgパッケージ
  • #597:修復が長すぎ、問題のインストールパッケージを必要とxmake
  • #634:修復mode.coverageビルド規則、および改良された検出フラグ

おすすめ

転載: www.oschina.net/news/112253/xmake-2-2-9-released