1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tboox-xmake

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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:

curl -fsSL https://xmake.io/shget.text | bash

С помощью Wget:

wget https://xmake.io/shget.text -O - | bash

С помощью PowerShell:

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

Поддерживаемые платформы

  • Windows (x86, x64, arm, arm64, arm64ec)
  • macOS (i386, x86_64, arm64)
  • Linux (i386, x86_64, arm, arm64, riscv, mips, 390x, sh4 ...)
  • *BSD (i386, x86_64)
  • Android (x86, x86_64, armeabi, armeabi-v7a, arm64-v8a)
  • iOS (armv7, armv7s, arm64, i386, x86_64)
  • WatchOS (armv7k, i386)
  • AppleTVOS (armv7, arm64, i386, x86_64)
  • AppleXROS (arm64, x86_64)
  • MSYS (i386, x86_64)
  • MinGW (i386, x86_64, arm, arm64)
  • Cygwin (i386, x86_64)
  • Wasm (wasm32, wasm64)
  • Haiku (i386, x86_64)
  • Harmony (x86_64, armeabi-v7a, arm64-v8a)
  • Cross (cross-toolchains ..)

Поддерживаемые наборы инструментов

$ 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")

Программа 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")

Автоматическое получение удалённого набора инструментов

Получение специальной версии LLVM

Требуется версия 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")

Плагины

Генерация файлов проекта IDE (makefile, vs2002 - vs2022 и т. д.)

$ 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

Запуск пользовательского плагина Lua

$ 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.

Интеграция с IDE/редакторами

Xmake Gradle Plugin (JNI)

Мы можем использовать плагин 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, доступен здесь.

Если вы используете Xmake, вы можете добавить свою информацию в вышеуказанный список через PR, чтобы другие пользователи и разработчики могли оценить интерес. Это также позволит пользователям более уверенно использовать xmake и даст нам мотивацию продолжать его поддерживать.

Это поможет проекту Xmake и его сообществу стать сильнее и расшириться!

Контакты

Спасибо

Этот проект существует благодаря всем людям, которые внесли свой вклад (CONTRIBUTING.md):

  • TitanSnow: Предоставил логотип xmake https://github.com/TitanSnow/ts-xmake-logo и скрипты установки
  • uael: Предоставил библиотеку семантического управления версиями sv
  • OpportunityLiu: Улучшил cuda, тесты и ci
  • xq144: Улучшил xrepo env shell, и внёс множество пакетов в репозиторий xmake-repo.
  • enderger: Помог сгладить углы в переводе README на английский язык

Введение

Лёгкий кроссплатформенный инструмент для сборки на C/C++, использующий Lua в качестве синтаксиса интерфейса API для описания проекта. Предоставляет услуги по отслеживанию зависимостей, компиляции, упаковке, установке, запуску и отладке в одном решении. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tboox-xmake.git
git@api.gitlife.ru:oschina-mirror/tboox-xmake.git
oschina-mirror
tboox-xmake
tboox-xmake
master