xmake
xmake — это кроссплатформенный инструмент сборки на основе языка Lua.
Инструмент xmake лёгок и не зависит ни от чего, кроме стандартной библиотеки.
Он использует файл xmake.lua для управления сборкой проекта с помощью простого и понятного синтаксиса.
xmake можно использовать для непосредственной сборки исходного кода (как Make или Ninja) или для создания файлов проекта, таких как CMake или Meson. У инструмента также есть встроенная система управления пакетами, которая помогает пользователям интегрировать зависимости C/C++.
Xmake = бэкенд для сборки + генератор проектов + менеджер пакетов + [удаленная|распределённая] сборка + кэш.
Хотя это и менее точно, xmake можно представить следующим образом:
xmake ≈ Make/Ninja + CMake/Meson + Vcpkg/Conan + distcc + ccache/sccache.
Если вы хотите узнать больше, обратитесь к: Документация, GitHub или Gitee. Вы также можете присоединиться к нашему сообществу.
Официальный репозиторий Xmake можно найти по адресу xmake-io/xmake-repo (https://github.com/xmake-io/xmake-repo).
curl -fsSL https://xmake.io/shget.text | bash
wget https://xmake.io/shget.text -O - | bash
Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content
Если вы не хотите использовать вышеуказанные скрипты для установки Xmake, посетите Руководство по установке (https://xmake.io/#/guide/installation) для ознакомления с другими методами установки (сборка из исходного кода, менеджеры пакетов и т. д.).
target("console")
set_kind("binary")
add_files("src/*.c")
Создаёт новую цель console
типа binary
и добавляет все файлы с расширением .c
в каталоге src
.
add_requires("tbox 1.6.*", "zlib", "libpng ~1.6")
Добавляет требование к версии tbox v1.6, zlib (любая версия), libpng v1.6.
Официальный пакетный репозиторий xmake находится по адресу: xmake-repo (https://github.com/xmake-io/xmake-repo)
Предполагается, что вы находитесь в корневом каталоге проекта.
$ 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 show -l toolchains
xcode Xcode IDE
msvc Microsoft Visual C/C++ Compiler
clang-cl LLVM Clang C/C++ Compiler compatible with msvc
yasm The Yasm Modular Assembler
clang A C language family frontend for LLVM
go Go Programming Language Compiler
dlang D Programming Language Compiler (Auto)
dmd D Programming Language Compiler
ldc The LLVM-based D Compiler
gdc The 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 NDK
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-rm 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 Данный текст представляет собой руководство по использованию инструмента XMake, который позволяет автоматизировать процесс сборки программного обеспечения. В тексте приводятся примеры использования XMake для различных задач, таких как компиляция проектов на разных языках программирования, использование различных версий компиляторов и библиотек, а также интеграция с различными IDE и редакторами кода.
В тексте также описываются плагины для XMake, которые позволяют расширить его функциональность, и приводятся ссылки на репозитории с этими плагинами. Кроме того, в тексте рассказывается об интеграции XMake с популярными IDE и редакторами, такими как Visual Studio Code, Sublime Text, IntelliJ IDEA и другими.
Текст содержит фрагменты кода на языке Lua, но они не являются полноценными программами и используются только для демонстрации синтаксиса команд XMake.
**Перевод текста на русский язык:**
### Правила Xmake
```lua
add_rules("xcode.framework") -- or xcode.bundle
add_files("src/*.m")
add_files("src/Info.plist")
add_requires("libomp", {optional = true})
target("loop")
set_kind("binary")
add_files("src/*.cpp")
add_rules("c++.openmp")
add_packages("libomp")
target("test")
set_kind("binary")
add_files("src/main.zig")
Требуется версия Clang, упакованная с LLM-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" # Новый генератор vsproj (рекомендуется)
$ 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-gradle, чтобы скомпилировать библиотеки JNI через gradle.
plugins {
id 'org.tboox.gradle-xmake-plugin' version '1.1.5'
}
android {
externalNativeBuild {
xmake {
path "jni/xmake.lua"
}
}
}
Задача xmakeBuild
будет автоматически добавлена к задаче assemble
, если плагин gradle-xmake
был применён.
$ ./gradlew app:assembleDebug
> Task :nativelib:xmakeConfigureForArm64
> Task :nativelib:xmakeBuildForArm64
>> xmake build
[ 50%]: cache 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%]: cache compiling.debug nativelib.cc
[ 74%]: linking.debug libnativelib.so
[100%]: build ok!
>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a
> Task :nativelib:preBuild
``` Задача:nativelib:assemble
Задача:app:assembleDebug
## Интеграция с CI
### GitHub Action
Плагин [github-action-setup-xmake](https://github.com/xmake-io/github-action-setup-xmake) для GitHub Actions позволяет использовать Xmake с минимальными усилиями, если вы используете GitHub Actions для своего конвейера CI.
```yaml
uses: xmake-io/github-action-setup-xmake@v1
with:
xmake-version: latest
Список людей и проектов, использующих Xmake, доступен здесь.
Если вы используете Xmake, вы можете добавить свою информацию в вышеуказанный список через PR, чтобы другие пользователи и разработчики могли оценить интерес. Это также позволит пользователям более уверенно использовать xmake и даст нам мотивацию продолжать его поддерживать.
Это поможет проекту Xmake и его сообществу стать сильнее и расшириться!
Этот проект существует благодаря всем людям, которые внесли свой вклад (CONTRIBUTING.md):
xrepo env shell
, и внёс множество пакетов в репозиторий xmake-repo.enderger
: Помог сгладить углы в переводе README на английский языкНеприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.