xmakeは、Luaに基づく軽量のクロスプラットフォームビルドツールです。xmake.luaを使用してプロジェクトビルドを維持します。makefile/ CMakeLists.txtと比較して、構成構文はより簡潔で直感的であり、初心者にとって非常に使いやすいです。短時間ですばやく開始できます。ユーザーが実際のプロジェクト開発に集中できるようにします。
この新しいバージョンでは、IntelシリーズのC ++およびFortranコンパイラーの完全なプラットフォームサポートを行い、以前のバージョンで追加されたWasmツールチェーンサポートを改善しました。同時に、Wasm用のQtSDKもサポートします。
さらに、luajitを最新のv2.1バージョンにアップグレードしました。クロスプラットフォームに関しては、xmakeも大幅な改善を行い、mips64アーキテクチャのサポートを追加しました。
新機能の紹介
Intel C ++コンパイラのサポート
このバージョンでは、Windowsのiclやlinux / macOSのicc / icpcなど、IntelシリーズのC ++コンパイラを完全にプラットフォームでサポートしています。
Intel C ++コンパイラを有効にするには--toolchain=icc
、対応するツールチェーンをパラメータに切り替えることにより、Intelコンパイラシステムにインストールするだけで済みます。
$ xmake f --toolchain=icc
$ xmake
IntelFortranコンパイラのサポート
以前のバージョンでは、xmakeはgfortranコンパイラのみをサポートしていました。このバージョンでは、ifortであるIntel Fortranコンパイラもサポートしています。これを使用するには、対応するifortツールチェーンに切り替えるだけです。
$ xmake f --toolchain=ifort
$ xmake
WasmプラットフォームとQt / Wasmサポート
以前のバージョンでは--toolchain=emcc
、コンパイルwasmプログラムをサポートするためにツールチェーンを追加しましたが、指定されたツールチェーンのみであり、たとえばターゲットプログラムの拡張*.js
や*.wasm
ドキュメント生成が適切に調整されていませんでした。
新しいバージョンではxmake f -p wasm
、emccツールチェーンを有効にするために構築されたプラットフォームを引き続き追加し、また、より良いサウンドを実現するために周囲の構成に基づいています。
wasmプラットフォームに切り替えると、デフォルトでxmakeが生成され*.js
、対応する*.wasm
他のオブジェクトファイルが追加でロードされてjswasmがプログラム*.html
ページを実行します。
さらに、Wasm用のQt SDKもサポートしています。たとえば、QtQuickAppプロジェクトを作成します。
$ xmake create -t qt.quickapp_static quickapp
ここで、作成したのは静的リンクを必要とするQtプロジェクトであることに気付きました。Qtライブラリのwasmバージョンのため、通常使用する前にプログラムへの静的リンクを強制する必要があります。
生成されたプロジェクトファイルxmake.luaの内容は、おおよそ次のとおりです。
add_rules("mode.debug", "mode.release")
includes("qt_add_static_plugins.lua")
target("demo")
add_rules("qt.quickapp_static")
add_headerfiles("src/*.h")
add_files("src/*.cpp")
add_files("src/qml.qrc")
add_frameworks("QtQuickControls2", "QtQuickTemplates2")
qt_add_static_plugins("QtQuick2Plugin", {
linkdirs = "qml/QtQuick.2", links = "qtquick2plugin"})
qt_add_static_plugins("QtQuick2WindowPlugin", {
linkdirs = "qml/QtQuick/Window.2", links = "windowplugin"})
qt_add_static_plugins("QtQuickControls2Plugin", {
linkdirs = "qml/QtQuick/Controls.2", links = "qtquickcontrols2plugin"})
qt_add_static_plugins("QtQuickTemplates2Plugin", {
linkdirs = "qml/QtQuick/Templates.2", links = "qtquicktemplates2plugin"})
上記の構成は、qt.quickapp_static
ルールのコンパイルを可能にするだけでなくqt_add_static_plugins
、いくつかの必要なQtプラグインの構成によっても可能になります。
次に、wasmプラットフォームに切り替えて、QtSDKがコンパイルを完了するように設定されていることを確認するだけです。
$ xmake f -p wasm [--qt=~/Qt]
$ xmake
コンパイルが完了すると、xmakeはビルドディレクトリにdemo.htmlと対応するdemo.js / demo.wasmプログラムを生成します。demo.htmlページを開いて、コンパイルしたQtプログラムを実行できます。表示効果は次のとおりです。 :
Qt / Wasmの詳細については、Issue#956を参照してください。
数学/浮動小数点コンパイルの最適化設定を追加しました
set_fpmodels()
浮動小数点コンパイラモードを設定するための設定インターフェイス、数理最適化に関連する抽象設定の計算を追加しました。高速、厳密、ただし正確など、いくつかの一般的なレベルがあり、一部はで設定できます。同時に、競合がある場合は、最後の設定が有効になります。
これらのレベルの説明については、Microsoftのドキュメント「浮動小数点の動作を指定する」を参照してください。
もちろん、gcc / iccなどの他のコンパイラの場合、xmakeはさまざまなコンパイルフラグにマップされます。
set_fpmodels("fast")
set_fpmodels("strict")
set_fpmodels("fast", "except")
set_fpmodels("precise") -- default
詳細については、Issue#981を参照してください。
OpenMPサポート
より抽象的な単純なopenmp特性を有効にするために、c.openmp
とc++.openmp
を追加してこれら2つのルールを設定できます。さらにLinuxは、macOSでジョブ用の追加のlibompライブラリが必要であるため、add_requires("libomp")
すばやく参照して統合できます。
add_requires("libomp", {
optional = true})
target("loop")
set_kind("binary")
add_files("src/*.cpp")
add_rules("c++.openmp")
add_packages("libomp")
cコードの場合は、有効にする必要がありますadd_rules("c.openmp")
。c/ c ++混合コンパイルの場合は、これら2つのルールを設定する必要があります。
c11 / c17のサポート
新バージョン、xmakeがするset_languages
最新バージョンのMSVCを提供しながら、新しいC11 / C17の設定を追加、改良を加えてきた/std:c11
し、/std:c17
また、フィット感とサポートを行いました。
必要なのは簡単な設定だけです。
set_languages("c17")
下位バージョンのmsvcおよび他のコンパイラがサポートしていない場合でも、c17標準のコンパイルを有効にできますが、xmakeは自動的に設定を無視します。
より良いMingwサポート
これを改善するには、いくつかの側面があります。最初は、WindowsでのMingw SDKルートディレクトリの自動検出を改善することです。ほとんどの場合、--mingw=
明示的に指定されたパスを自動的に検出できる追加の構成パラメーターは必要ありません。
詳細については、Issue#977を参照してください。
さらに、Msys2 / MingwとmacOS、linux / Mingwに加えて、新しいバージョンではllvm-mingw SDKもサポートしているため、mingwを使用してarm / arm64アーキテクチャのプログラムをコンパイルできます。
$ xmake f -p mingw -a arm64
$ xmake
さらに、リモート依存関係パッケージの自動コンパイルと統合では、cmakelistを備えたサードパーティライブラリがあります。mingwプラットフォームでも、xmakeは自動的にコンパイルされて統合され、直接使用できるため、非常に高速で便利です。
最近、xmake-repoの公式C / C ++パッケージリポジトリに、直接使用できるmingwプラットフォームをサポートする多くの新しいライブラリも追加しました。
クロスプラットフォーム操作の改善
mips64ベースのLinuxシステム操作のサポートを追加し、arm / arm64でのxmakeの安定性を改善しました。最新のluajitv2.1を組み込むことで、arm64でのlightuserdataの不良など、luajitが残した多くの問題を解決しました。ポインタおよびその他の問題。
arm64をサポートするためにmacOSSierraを追加しました
xmakeは最新のXcodeベータにも適応し、arm64ターゲットプログラムのコンパイルをサポートするためにmacOを追加します。コンパイルするにはarm64アーキテクチャに切り替えるだけです。
$ xmake f -a arm64 [--xcode=Applications/Xcode-beta.app/]
$ xmake
もちろん、前提はmacOSで実行し、Developer Transition Kit(DTK)をサポートする最新のXcodeベータバージョンを使用することです。
公式倉庫には、より多くのC / C ++ライブラリが含まれています
xmakeの公式C / C ++リポジトリであるxmake-repoには、最近、一般的に使用される数十のC / C ++ライブラリが追加され、libx11シリーズのすべてのライブラリも含まれています。
ウェアハウスパッケージのメンテナンス作業負荷は膨大ですが、現在の開発動向もますます活発になっており、ウェアハウスパッケージへのユーザーの貢献やメンテナンスの改善がますます進んでいます。
そして今、私たちの公式ウェアハウスを迅速に統合することができます:linux、macOS、windows、mingw、bsd、msys、iphoneos、androidおよび他の8つの一般的なプラットフォームライブラリ。真のクロスプラットフォームC / C ++リモート依存ライブラリ統合と使用サポートを実現します。
現在、いくつかのパッケージとサポートプラットフォームのリストが含まれています。ここで確認できます:PKGLIST.md
私たちは、C / C ++ライブラリのエコロジーの混乱と面倒な統合と使用の問題を解決し、高速で一貫性のある自動統合およびコンパイルソリューションを提供するために懸命に取り組んできました。xmakeはサードパーティの公式ウェアハウスパッケージの統合をサポートするだけではありません。 vcpkg / conan / clib / homebrewなどだけでなく、より優れた統合エクスペリエンスを実現するために、自社構築の公式ウェアハウスの改善にも努めています。
例えば:
add_requires("tbox >1.6.1", "libuv master", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8")
add_requires("conan::openssl/1.1.1g", {
alias = "openssl", optional = true, debug = true})
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("tbox", "libuv", "vcpkg::ffmpeg", "brew::pcre2/libpcre2-8", "openssl")
そして名前空間などのパッケージ、自動的にデフォルトながら、サードパーティの統合をダウンロードするには、対応するパッケージリポジトリに切り替わりますし、他のライブラリが提供されているデフォルトパッケージxmake-レポ公式リポジトリを使用します。vcpkg::
brew::
conan::
tbox >1.6.1
使用方法と統合方法はまったく同じです。xmakeは自動的にダウンロード、コンパイル、統合、リンクします。
リモートパッケージの依存関係の統合に関する詳細な手順については、関連ドキュメントを参照してください:リモート依存関係ライブラリの統合と使用
同時に、C / C ++ライブラリエコロジーの構築を改善し、簡潔で一貫したライブラリエクスペリエンスを提供するために、より多くの人々が参加することを歓迎します。C/ C ++パッケージ管理とライブラリエコロジーはRust /よりも悪くないと思います。行く。
より多くのディストリビューションインストールサポート
新しいバージョンでは、xmakeをUbuntu PPAソースに送信したため、既存のスクリプトのインストール方法に加えて、aptを介してxmakeをすばやくインストールすることもできます。
sudo add-apt-repository ppa:xmake-io/xmake
sudo apt update
sudo apt install xmake
同時に、パッケージをCoprパッケージ管理リポジトリに送信したため、Fedora、RHEL、OpenSUSE、CentOSなどのディストリビューションにdnfを介してxmakeをすばやくインストールすることもできます。
sudo dnf copr enable waruqi/xmake
sudo dnf install xmake
入門コース
最近、公式のxmake入門コースも開始しました。Xmakeを使用すると、C / C ++プロジェクトを簡単に構築して、学習しながら実験を行うことでxmakeの使用法をすばやく学ぶことができます。
コンテンツを更新する
新機能
- #955:ジグ空のプロジェクトテンプレートを追加
- #956:Wasmコンパイルプラットフォームを追加し、Qt / WasmSDKをサポート
- luajitをv2.1の最新のブランチバージョンにアップグレードし、mips64でのxmakeの実行をサポートします
- #972:
depend.on_changed()
依存ファイルの処理を簡素化するために追加されました - #981:
set_fpmodels()
抽象化解除設定math / float-pointコンパイル最適化モードを追加 - #980:インテルC / C ++およびFortranコンパイラーの完全なプラットフォームサポートを追加
- #986:16.8を超えるmsvcコンパイラを追加
c11
/c17
サポート - #979:OpenMPのクロスプラットフォーム抽象構成を追加します。
add_rules("c++.openmp")
改善する
- #958:mingwプラットフォームを改善し、llvm-mingwツールチェーンのサポートを追加し、arm64 / armアーキテクチャのサポートを追加します
- 増加
add_requires("zlib~xxx")
モードは、独立したパッケージの存在と同じ構成を複数のマウントで両方のパケットをサポートすることを可能にします - #977:Windowsでのfind_mingwの検出を改善
- #978:ツールチェーンのフラグの順序を改善
- XCodeツールチェーンを改善し、macOS / arm64をサポートします