wget https://xmake.io/shget.text -O - | bash
#### Использование powershell
```powershell
Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content
Если вы не хотите использовать скрипты для установки, вы можете перейти по ссылке и ознакомиться с другими способами установки.
target("hello")
set_kind("binary")
add_files("src/*.cpp")
add_requires("tbox 1.6.*", "zlib", "libpng ~1.6")
Официальный репозиторий пакетов xmake: xmake-repo
$ xmake create hello
$ cd hello
$ xmake
$ xmake run console
$ xmake run -d console
$ xmake test
$ xmake f -p [windows|linux|macosx|android|iphoneos ..] -a [x86|arm64 ..] -m [debug|release]
$ xmake
$ xmake f --menu
Тестовый проект: xmake-core
Система сборки | Termux (8 ядер / -j12) | Система сборки | MacOS (8 ядер / -j12) |
---|---|---|---|
xmake | 24,890 с | xmake | 12,264 с |
ninja | 25,682 с | ninja | 11,327 с |
cmake (gen + make) | 5,416 с + 28,473 с | cmake (gen + make) | 1,203 с + 14,030 с |
cmake (gen + ninja) | 4,458 с + 24,842 с | cmake (gen + ninja) | 0,988 с + 11,644 с |
Система сборки | Termux (-j1) | Система сборки | MacOS (-j1) |
---|---|---|---|
xmake | 1 м 57,707 с | xmake | 39,937 с |
ninja | 1 м 52,845 с | ninja | 38,995 с |
cmake (gen + make) | 5,416 с + 2 м 10,539 с | cmake (gen + make) | 1,203 с + 41,737 с |
cmake (gen + ninja) | 4,458 с + 1 м 54,868 с | cmake (gen + ninja) | 0,988 с + 38,022 с |
В официальном репозитории доступно около 800+ популярных пакетов, что позволяет легко интегрировать и компилировать их на всех платформах.
Поддержка кроссплатформенных пакетов и их зависимостей.
Возможность управления виртуальными средами пакетов и их загрузки.
Ускорение облачной компиляции Windows.
Поддержка пользовательских репозиториев пакетов.
Интеграция с третьими сторонами, такими как vcpkg, conan, conda и т. д.
Автоматическое извлечение и использование облачных инструментов.
Блокировка зависимостей пакетов. Компиляторы
LDC — LLVM-based D Compiler.
GDC — GNU D Compiler (GDC).
GFortran — GNU Fortran Programming Language Compiler.
Zig — Zig Programming Language Compiler.
SDCC — Small Device C Compiler.
CUDA — CUDA Toolkit (nvcc, nvc, nvc++, nvfortran).
NDK — Android Native Development Kit.
Rust — Rust Programming Language Compiler.
Swift — Swift 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 Arm Embedded Toolchain — GNU Arm Embedded Toolchain.
Envs — Environment variables toolchain.
FASM — Flat Assembler.
TinyCC — Tiny C Compiler.
EmCC — A toolchain for compiling to asm.js and WebAssembly.
ICC — Intel C/C++ Compiler.
IFort — Intel Fortran Compiler.
IFx — Intel LLVM Fortran Compiler.
MuslCC — The musl-based cross-compilation toolchain.
FPC — Free Pascal Programming Language Compiler.
WASI — WASI-enabled WebAssembly C/C++ toolchain.
Nim — Nim Programming Language Compiler.
Circle — A new C++20 compiler.
ARMCC — ARM Compiler Version 5 of Keil MDK.
Armclang — ARM Compiler Version 6 of Keil MDK.
C51 — Keil development tools for the 8051 Microcontroller Architecture.
ICX — Intel LLVM C/C++ Compiler.
DCPP — Intel LLVM C++ Compiler for data parallel programming model based on Khronos SYCL.
MASM32 — The MASM32 SDK.
Iverilog — Icarus Verilog.
Verilator — open-source SystemVerilog simulator and lint system.
Cosmocc — build-once run-anywhere.
HDK — Harmony SDK.
Поддерживаемые языки
C/C++, Objc/Objc++, Swift, Assembly, Golang, Rust, Dlang, Fortran, Cuda, Zig, Vala, Pascal, Nim, Verilog, FASM, NASM, YASM, MASM32, Cppfront.
Поддерживаемые характеристики
Типы проектов
Распределённая компиляция и кэширование
Поддержка различных платформ, msvc, clang, gcc и кросс-компиляторов, а также возможность создания программ для Android, iOS, Linux, Windows и macOS.
Удаленная компиляция
Дополнительная информация доступна по ссылке.
Дополнительные примеры
Отладка и выпуск:
add_rules("mode.debug", "mode.release")
target("console")
set_kind("binary")
add_files("src/*.c")
if is_mode("debug") then
add_defines("DEBUG")
end
Пользовательские скрипты:
target("test")
set_kind("binary")
add_files("src/*.c")
after_build(function (target)
print("hello: %s", target:name())
os.exec("echo %s", target:targetfile())
end)
Зависимости пакетов:
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")
Qt QuickApp приложения:
target("test")
add_rules("qt.quickapp")
add_files("src/*.cpp")
add_files("src/qml.qrc")
``` Данный текст написан на языке Lua.
**WDK/UMDF 驱动程序**
```lua
target("echo")
add_rules("wdk.driver", "wdk.env.umdf")
add_files("driver/*.c")
add_files("driver/*.inx")
add_includedirs("exe")
target("app")
add_rules("wdk.binary", "wdk.env.umdf")
add_files("exe/*.cpp")
Дополнительные примеры WDK-приложений (umdf/kmdf/wdm) см.: WDK工程例子.
iOS/MacOS 应用程序
target("test")
add_rules("xcode.application")
add_files("src/*.m", "src/**.storyboard", "src/*.xcassets")
add_files("src/Info.plist")
Framework 和 Bundle 程序 (iOS/MacOS)
target("test")
add_rules("xcode.framework") -- или xcode.bundle
add_files("src/*.m")
add_files("src/Info.plist")
OpenMP 程序
add_requires("libomp", {optional = true})
target("loop")
set_kind("binary")
add_files("src/*.cpp")
add_rules("c++.openmp")
add_packages("libomp")
Zig 程序
target("test")
set_kind("binary")
add_files("src/main.zig")
Мы используем clang из llvm-10 для компиляции проекта.
add_requires("llvm 10.x", {alias = "llvm-10"})
target("test")
set_kind("binary")
add_files("src/*.c")
set_toolchains("llvm@llvm-10")
Также мы можем извлечь определённый кросс-компилированный набор инструментов для компиляции проектов.
add_requires("muslcc")
target("test")
set_kind("binary")
add_files("src/*.c")
set_toolchains("@muslcc")
Также можно использовать указанный набор инструментов muslcc для компиляции и интеграции всех зависимостей.
add_requires("muslcc")
add_requires("zlib", "libogg", {system = false})
set_toolchains("@muslcc")
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("zlib", "libogg")
$ xmake project -k vsxmake -m "debug,release" # новый плагин для VS (рекомендуется)
$ xmake project -k vs -m "debug,release"
$ xmake project -k cmake
$ xmake project -k ninja
$ xmake project -k compile_commands
$ xmake l ./test.lua
$ xmake l -c "print('hello xmake!')"
$ xmake l lib.detect.find_tool gcc
$ xmake l
> print("hello xmake!")
> {1, 2, 3}
< {
1,
2,
3
}
Для получения дополнительной информации о встроенных плагинах см. соответствующую документацию: Встроенные плагины.
Другие расширения плагинов доступны для загрузки и установки в репозитории плагинов: xmake-plugins.
xmake-visualstudio (third-party, thanks @HelloWorld886)
xmake-qtcreator (third-party, thanks @Arthapz)
Мы также можем интегрировать компиляцию JNI-библиотек в Gradle с помощью xmake-gradle плагина.
plugins {
id 'org.tboox.gradle-xmake-plugin' version '1.1.5'
}
android {
externalNativeBuild {
xmake {
path "jni/xmake.lua"
}
}
}
После применения плагина gradle-xmake
задача xmakeBuild
автоматически внедряется в существующую задачу assemble
, автоматически выполняя компиляцию и интеграцию JNI-библиотеки.
$ ./gradlew app:assembleDebug
> Task :nativelib:xmakeConfigureForArm64
> Task :nativelib:xmakeBuildForArm64
>> xmake build
[ 50%]: ccache compiling.debug nativelib.cc
[ 75%]: linking.debug libnativelib.so
[100%]: build ok!
>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/arm64-v8a
> Task :nativelib:xmakeConfigureForArmv7
> Task :nativelib:xmakeBuildForArmv7
>> xmake build
[ 50%]: ccache
``` **Компиляция. Отладка nativelib.cc**
[75 %]: компоновка. Отладка libnativelib.so
[100 %]: сборка прошла успешно!
>> Установить артефакты в /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a
> Задача: nativelib: preBuild
> Задача: nativelib: assemble
> Задача: app: assembleDebug
Мы можем использовать github-action-setup-xmake для кроссплатформенной установки и интеграции Xmake в Github Action.
uses: xmake-io/github-action-setup-xmake@v1
with:
xmake-version: latest
Пожалуйста, нажмите на список пользователей, чтобы увидеть полный список пользователей. Если вы используете xmake, мы также приветствуем вас отправить информацию через PR в вышеупомянутый список. Это позволит большему количеству пользователей узнать, сколько людей используют xmake, а также позволит пользователям чувствовать себя более уверенно при использовании xmake. Мы также будем иметь больше мотивации продолжать вкладывать средства, чтобы сделать проект xmake и сообщество более процветающими.
Спасибо всем, кто внес свой вклад в xmake:
xrepo env shell
, а также внес большой вклад пакетов в репозиторий xmake-repo.Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.