xmakeは、Luaに基づく軽量のクロスプラットフォームビルドツールです。xmake.luaを使用してプロジェクトビルドを維持します。makefile/ CMakeLists.txtと比較して、構成構文はより簡潔で直感的であり、初心者にとって非常に使いやすいです。短時間ですばやく開始できます。ユーザーが実際のプロジェクト開発に集中できるようにします。
近年のxmakeの継続的な反復型開発により、xmakeはGithubで2.9Kのスター、300以上のフォーク、30以上の寄稿者を獲得し、900以上の問題、5400以上のコミットを処理し、アクティブユーザーも増えています。
今回、xmake v2.3.7バージョンがリリースされました。新しいバージョンでは、主にxmake自体の安定性と互換性が向上しました。2か月の継続的な反復により、さまざまなユーザーの問題、ユーザーエクスペリエンスが修正され、安定性が大幅に向上しました。 。
さらに、このバージョンでは、TinyCおよびEmscripten(WebAssembly)コンパイルツールチェーンのサポートも追加されています。
特にWindowsプラットフォームの場合、追加のxmake-tinycインストールパッケージを提供します。これにはtinycコンパイラが組み込まれているため、ユーザーは肥大化した環境と環境を完全に回避でき、ワンクリックでインストールでき、すぐに使用できます。 5Mのインストールパッケージのみが必要です。シンプルなCプログラムを開発でき、winapiヘッダーファイルの完全なセットも含まれています。
最後に、trybuildモードのコンパイルを改善しました。xmakeを使用すると、autotools / cmakeによって管理されているサードパーティプロジェクトをすばやくコンパイルでき、android / ios / mingwなどのクロスコンパイル環境をすばやく接続して、迅速な移行とコンパイルを実現できます。
新機能の紹介
より多様なインストール方法
新しいバージョンでは、xmakeインストールパッケージをWindowsのwingetおよびubuntu ppaリポジトリに送信しました。これにより、xmakeをより便利かつ迅速にインストールできます。
Wingetのインストール
winget install
UbuntuPPAのインストール
sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake
もちろん、他の多くのインストール方法もサポートしています。他のプラットフォームの詳細なインストール方法については、「インストールドキュメント」を参照してください。
より豊富なツールチェーンのサポート
現在、多くのツールチェーン環境をサポートしており、このバージョンでは、TinyCおよびEmscripten(WebAssembly)コンパイルツールチェーンのサポートを追加しました。対応するツールチェーンにすばやく切り替えて、次のコマンドでコンパイルできます。
xmake f --toolchain=[tinyc|emscripten]
xmake
また、新しいバージョンでは、組み込みおよび統合されたTinyCコンパイル環境の2つの追加インストールパッケージを提供しています。インストールパッケージ全体に必要なのは5Mのみで、winsdkapiも含まれています。
このインストールパッケージを通じて、Cプログラムをコンパイルして開発することで、肥大化したvs開発環境(いくつかのG)を完全に取り除き、ワンクリックインストールを実現し、箱から出して使用することができます。リートコードをブラッシングすることは非常に便利です。そして、いくつかのCテストコードを記述します。はい、この特定のインストールに対して全体をインストールする必要はありません。
さらに、すべてのxmakeツールチェーンのサポートを確認したい場合は、次のコマンドを実行できます。別のxmake f -p cross --sdk=/xxx
コンパイル構成で、より一般的なクロスツールチェーンをサポートできます。
$ xmake show -l toolchains
xcode Xcode IDE
vs VisualStudio IDE
yasm The Yasm Modular Assembler
clang A C language family frontend for LLVM
go Go Programming Language Compiler
dlang D Programming Language Compiler
gfortran GNU Fortran Programming Language Compiler
zig Zig Programming Language Compiler
sdcc Small Device C Compiler
cuda CUDA Toolkit
ndk Android NDK
rust Rust Programming Language Compiler
llvm A collection of modular and reusable compiler and toolchain technologies
cross Common cross compilation toolchain
nasm NASM Assembler
gcc GNU Compiler Collection
mingw Minimalist GNU for Windows
gnu-rm GNU Arm Embedded Toolchain
envs Environment variables toolchain
fasm Flat Assembler
tinyc Tiny C Compiler
emcc A toolchain for compiling to asm.js and WebAssembly
TryBuildコンパイルモードの改善
いわゆるtrybuildモードは、既存のサードパーティビルドシステムに適応するxmakeによって導入された機能です。これは、既存のサードパーティプロジェクトのほとんどが、autotools / cmakeなどのサードパーティビルドシステムによって維持されているためです。 xmake移行のコストは、構成のためにまだ比較的高いです。
xmakeの構成は非常に簡単に開始できますが、安定して保守されているプロジェクトのビルドシステムを変更する必要はありません。xmakeは主に一部の新しいプロジェクトのビルドと保守に使用されます。
この背景に基づいて、試行コンパイルモードと呼ばれるtrybuildコンパイルモードを使用するxmakeは、プロジェクトをビルドすることによってサードパーティを自動的に検出し、メンテナンスautotoolsプロジェクトを検出すると、自動的に呼び出され./configure; make
てコンパイルします。
cmakeによって管理されているプロジェクトが検出されると、cmakeが自動的に呼び出され、コンパイルするmakefile / build.ninjaが生成されます。xmakeを使用するユーザーの場合、コンパイルは常にコマンドxmakeを実行するだけで完了できます。次に例を示します。
$ xmake
note: configure found, try building it or you can run `xmake f --trybuild=` to set buildsystem (pass -y or --confirm=y/n/d to skip confirm)?
please input: y (y/n)
y
...
CC src/pcre2grep-pcre2grep.o
CC src/libpcre2_8_la-pcre2_auto_possess.lo
CC src/libpcre2_8_la-pcre2_config.lo
...
build ok!
xmakeがautotoolsビルドシステムを検出した後、autotoolsを呼び出してコンパイルするかどうかをユーザーに確認し、yを入力して確認します。cmakeプロジェクトに直接コンパイルできますxmake
。同じコマンドを実行するだけで済みます。
autotools / cmakeの構成、使用、コンパイルの方法を気にする必要はありません。結局のところ、cmakeはWindowsプラットフォームとLinuxプラットフォーム用に異なるビルドファイルを生成する必要があります。コンパイル方法も異なります。makeとを呼び出します。次にmsbuild。Big。
それだけでなく、xmakeはxmake -r
直接ドッキングして再コンパイルし、ドッキングxmake clean
して統一されたファイルのクリーンアップxmake -v
を実現し、ドッキングして統一されたビューの詳細なコンパイルコマンドを実現します。
TryBuildのクロスコンパイルサポート
現在のホストプラットフォームのみをコンパイルする場合、おそらくこれは何ですか、cmakeもcmake --build .
直接コンパイルされますが、それほど面倒ではありません。
だから問題は、クロスコンパイルをどのように行うかです。autotools / cmakeを使用してmingw / android / iosターゲットプログラムをクロスコンパイルして生成した場合でも、cmakeとautotoolsはそれを簡単かつ一貫して処理できますか?
Autotoolsは、とにかく、そのクロスエクスペリエンスを嫌います。autotoolsプロジェクトでコードをクロスコンパイルして移植するたびに、長い時間がかかります。さまざまなエラーをパッケージ化し、さまざまな転送を研究する必要があります。構成パラメーター。プラットフォームが異なれば、構成も異なります。
そして、cmake、それを使用するのは簡単ではないと思います。たとえば、Androidプラットフォームの場合、次のようにする必要があります。
$ cmake \
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=$ABI \
-DANDROID_NATIVE_API_LEVEL=$MINSDKVERSION \
$OTHER_ARGS
iOSプラットフォームの場合、短い回答の構成方法は見つかりませんでしたが、非常に複雑なサードパーティのiosツールチェーン構成が見つかりました:https://github.com/leetal/ios-cmake/blob/master/ios .toolchain.cmake
mingwにとって、それは別の方法です。私は長い間環境について投げてきました、それは非常に投げています。
次に、xmakeを使用してcmakeをドッキングし、クロスコンパイルを実現する場合は、これを行うだけで済みます。
Androidプログラムをコンパイルします。
xmake f -p android --trybuild=cmake --ndk=/xxx
xmake
iOSプログラムをコンパイルします。
xmake f -p iphoneos --trybuild=cmake
xmake
mingwプログラムをコンパイルします。
xmake f -p mingw --trybuild=cmake --mingw=/sdk/xxx
xmake
--trybuild=cmake
有効なcmake試行コンパイルモードで構成-p android/iphoneos/mingw
し、対応するプラットフォームにカットして、対応するSDKをドッキングするだけで、このプロジェクトでcmakeを使用して保守する場合でも、同じ方法でクロスコンパイラーをすばやく実現できます。
ユーザーがcmakeリレーションを使用して異なるツールチェーンを転送構成する必要がない場合、xmakeは自動的に処理されます。コンパイルするには、xmakeを実行するだけで済みます。またxmake -r
、再コンパイル、コンパイル、または詳細の確認にも実行できxmake -v
ます。
さらに、xmake f -p iphoneos -a arm64 --trybuild=cmake
コンパイラアーキテクチャをすばやく切り替えることもできます。
最後に、trybuildモードはユーザーがコンパイルと構成の操作を保存するのに大いに役立ちますが、条件が実行された場合でも、誰もがxmake.luaを直接使用して自分のプロジェクトを維持できることを願っています。
このように、trybuildでコンパイルする必要はなく、内部xmakeはcmake、autotools、その他のツールを呼び出さずにプロジェクトを直接コンパイルするため、xmakeはクロスコンパイルをより完全にサポートします。
xmake f -p iphoneos
xmake
または
xmake f -p android --ndk=/xxx
xmake
ご覧の--trybuild=cmake
とおり、今回は引数を残します。いいえ、直接翻訳されます。今回はxmakeと同等の個別のmake / ninjaであり、makeに依存しないため、コンパイル速度も完全に同等の忍者になります。
リモート依存関係パッケージの統合を改善する
クロスコンパイルのサポート
xmakeは、trybuildのmingw / autotoolsクロスコンパイルのサポートをサポートするだけでなく、リモートパッケージウェアハウスのcmake / autotoolsによって維持されるサードパーティのクロスコンパイルのインストールと統合もサポートします。
例えば:
add_requires("pcre2")
target("test")
set_kind("binary")
add_files("src/*.cpp")
add_packages("pcre2")
次に、iphoneosプラットフォームに切り替えることで、iphoneosプラットフォームのpcre2パッケージをすばやく統合してインストールし、pcre2パッケージがautotools / cmakeによって管理されている場合でも、コンパイルしてリンクすることができます。
xmake f -p iphoneos
xmake
プライベートネットワークパッケージ倉庫
このリリースでは、リモート統合パッケージに依存しxmake g --network=private
ており、プライベートネットワークモードにカットして構成できるなど、若干の改善も加えられています。
これは主に、xmakeの自己構築パッケージ管理ウェアハウスを介して一部の企業の内部ネットワークで使用され、クローズドC / C ++依存パッケージ統合を実現し、xmakeが提供する公式ウェアハウスのパッケージにまったく依存しません。
インストールされたパッケージを再帰的にエクスポートする
Xmakeは以前、xmakeによってインストールされたすべてのサードパーティの依存関係パッケージをエクスポートするコマンドを提供していました。
xmake require --export
ただし、以前のバージョンは依存関係のある一部のパッケージに対応しています。エクスポートすると、それ自体のみがエクスポートされ、すべての依存関係はエクスポートされません。このバージョンでは、バージョンが改善され、対応するすべての依存パッケージも実行されます。 。
QtSDK環境のサポートを改善する
さらに、このバージョンでは、Qt SDKツールチェーン環境のサポートが強化されています。たとえば、ubuntuシステムでaptコマンドを使用してインストールされたQt SDKツールチェーンもサポートされていますが、以前のバージョンでは、からのダウンロードとインストールのみがサポートされています。 Qt公式ウェブサイトQtSDK環境。
コンテンツを更新する
新機能
- #2941:wingstを介したxmakeのインストールのサポート
- xmake-tinycインストールパッケージ、組み込みのtinycコンパイラを追加し、msvc環境のないサポートウィンドウでcコードを直接コンパイルすることもできます
- tinycコンパイルツールチェーンを追加する
- emcc(emscripten)コンパイルツールチェーンを追加して、asm.jsとWebAssemblyをコンパイルします
- #947:
xmake g --network=private
構成設定プライベートネットワークモード、リモート依存関係を回避するためにインターネットにアクセスしてコンパイルをダウンロードすると失敗する
改善する
- #907:msvcのリンカー最適化オプションを改善して、より小さな実行可能プログラムを生成する
- UbuntuでのQt環境サポートを改善する
- #918:cuda11ツールチェーンのサポートを改善
- Qtサポートを改善し、ubuntu / aptを介してインストールされたQtsdkのサポートを検出し、検出効率を最適化します
- CMakeプロジェクトファイルジェネレータを改善する
- #931:エクスポートパッケージを改善し、すべての依存パッケージのエクスポートをサポートします
- #930:プライベートパッケージ定義にバージョン定義がない場合は、パッケージを直接ダウンロードしてみてください
- #927:android ndkを改善し、arm / thumbコマンドモードスイッチをサポート
- Android / Mingw / iPhoneOS / WatchOSツールチェーンをサポートするようにtrybuild / cmakeを改善します