LUA를 기반으로 한 크로스 플랫폼 빌드 유틸리티
최신 C/C ++ 빌드 도구 : 단순하고 빠르며 강력한 의존성 패키지 통합
스폰서가 되어이 프로젝트를 지원하십시오. 귀하의 로고는 귀하의 웹 사이트 링크와 함께 여기에 표시됩니다.
GitHub 스폰서 프로그램을 통해 추가 기술 지원 서비스를 받으려면 스폰서를 고려할 수도 있습니다. 그렇게한다면 Xmake-IO/Technical Support Repository에 액세스 할 수 있습니다. 여기에는 다음과 같은 이점이 있습니다.
xmake 란 무엇입니까?
xmake.lua 파일을 사용하여 간단하고 읽을 수있는 구문으로 프로젝트 빌드를 유지 관리합니다.Xmake는 Make 또는 Ninja와 같은 소스 코드를 직접 빌드하는 데 사용하거나 CMake 또는 Meson과 같은 프로젝트 소스 파일을 생성 할 수 있습니다. 또한 사용자가 C/C ++ 종속성을 통합 할 수 있도록 내장 패키지 관리 시스템이 있습니다.
Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cache
덜 정확하지만 다음과 같은 방식으로 Xmake를 여전히 이해할 수 있습니다.
Xmake ≈ Make/Ninja + CMake/Meson + Vcpkg/Conan + distcc + ccache/sccache
더 알고 싶다면 문서, Github 또는 Gitee를 참조하십시오. 또한 커뮤니티에 가입 할 수 있습니다.
공식 Xmake 저장소는 Xmake-Io/Xmake-Repo에서 찾을 수 있습니다.

curl -fsSL https://xmake.io/shget.text | bashwget https://xmake.io/shget.text -O - | bashInvoke-Expression (Invoke-Webrequest ' https://xmake.io/psget.text ' -UseBasicParsing).Content위의 스크립트를 사용하여 Xmake를 설치하지 않으려면 다른 설치 방법 (소스 빌딩, 패키지 관리자 등)은 설치 안내서를 방문하십시오.
target ( " console " )
set_kind ( " binary " )
add_files ( " src/*.c " ) Kind binary 의 새로운 대상 console 생성하고 src 디렉토리에서 .c 로 끝나는 모든 파일을 추가합니다.
add_requires ( " tbox 1.6.* " , " zlib " , " libpng ~1.6 " )Tbox v1.6, Zlib (모든 버전) 및 libpng v1.6의 요구 사항이 추가됩니다.
공식 Xmake 패키지 저장소는 다음과 같습니다. 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
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
dpcpp Intel LLVM C++ Compiler for data parallel programming model based on Khronos SYCL
masm32 The MASM32 SDK
iverilog Icarus Verilog
verilator Verilator open-source SystemVerilog simulator and lint system
cosmocc build-once run-anywhere
hdk Harmony SDKXmake 전시회 :
compile_commands.json )Xmake는 다음 유형의 프로젝트를 지원합니다.
Xmake는 종속성을 자동으로 가져오고 설치할 수 있습니다!
xrepo env shell 사용하여 패키지 가상 환경을 지원합니다아래는 대략 Xmake의 아키텍처를 보여주는 다이어그램과 그 기능 기능입니다.
자세한 내용은 #274를 참조하십시오
자세한 내용은 #622를 참조하십시오
자세한 내용은 #622를 참조하십시오
Xmake의 속도는 닌자와 동등합니다! 테스트 프로젝트 : Xmake-Core
| 빌드 시스템 | termux (8core/-j12) | 빌드 시스템 | MACOS (8core/-j12) |
|---|---|---|---|
| xmake | 24.890 년대 | xmake | 12.264S |
| 닌자 | 25.682S | 닌자 | 11.327S |
| cmake (gen+make) | 5.416S+28.473S | cmake (gen+make) | 1.203S+14.030S |
| cmake (gen+닌자) | 4.458S+24.842S | cmake (gen+닌자) | 0.988S+11.644S |
| 빌드 시스템 | termux (-j1) | 빌드 시스템 | MACOS (-J1) |
|---|---|---|---|
| xmake | 1M57.707S | xmake | 39.937S |
| 닌자 | 1M52.845S | 닌자 | 38.995S |
| cmake (gen+make) | 5.416S+2M10.539S | cmake (gen+make) | 1.203S+41.737S |
| cmake (gen+닌자) | 4.458S+1M54.868S | cmake (gen+닌자) | 0.988S+38.022S |
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 )Xmake-Repo 또는 타사 저장소에서 패키지를 다운로드하여 사용하십시오.
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 " )또한 Xrepo 명령을 사용하여 종속성을 빠르게 설치할 수도 있습니다.
target ( " test " )
add_rules ( " qt.quickapp " )
add_files ( " src/*.cpp " )
add_files ( " src/qml.qrc " ) target ( " test " )
set_kind ( " binary " )
add_files ( " src/*.cu " )
add_cugencodes ( " native " )
add_cugencodes ( " compute_35 " ) 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 프로그램 예제를 방문하십시오.
target ( " test " )
add_rules ( " xcode.application " )
add_files ( " src/*.m " , " src/**.storyboard " , " src/*.xcassets " )
add_files ( " src/Info.plist " ) target ( " test " )
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 " )프로젝트를 컴파일하려면 LLM-10으로 포장 된 Clang 버전이 필요합니다.
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 " # New vsproj generator (Recommended)
$ 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
}Bultin 플러그 목록을 보려면 내장 플러그인을 방문하십시오.
플러그인 저장소 Xmake-Plugins에서 다른 플러그인을 다운로드하여 설치하십시오.
Xmake-gradle 플러그인을 사용하여 Gradle을 통해 JNI 라이브러리를 컴파일 할 수 있습니다.
plugins {
id 'org.tboox.gradle-xmake-plugin' version '1.1.5'
}
android {
externalNativeBuild {
xmake {
path "jni/xmake.lua"
}
}
}
gradle-xmake-plugin 적용된 경우 xmakeBuild 작업이 assemble 작업에 자동으로 주입됩니다.
$ ./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
[ 75%]: linking.debug libnativelib.so
[100%]: build ok!
>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a
> Task :nativelib:preBuild
> Task :nativelib:assemble
> Task :app:assembleDebug GitHub 액션 용 GitHub-Action-Setup-Xmake 플러그인을 사용하면 CI 파이프 라인에 GitHub 작업을 사용하는 경우 최소한의 노력으로 Xmake를 사용할 수 있습니다.
uses : xmake-io/github-action-setup-xmake@v1
with :
xmake-version : latest Xmake를 사용하는 사람과 프로젝트 목록은 여기에서 확인할 수 있습니다.
Xmake를 사용하는 경우 PR을 통해 위의 목록에 정보를 제출하여 다른 사용자와 개발자가 관심을 측정 할 수 있도록 환영합니다. 또한 사용자는 사용자가 Xmake를 더 자신있게 사용하고 계속 유지하려는 동기를 부여 할 수있게 해주었다.
이것은 Xmake 프로젝트에 도움이 될 것이며 커뮤니티가 더 강해지고 확장됩니다!
이 프로젝트는 기여한 모든 사람들 덕분에 있습니다.
xrepo env shell 개선하고 Xmake-Repo 저장소에 많은 패키지를 제공합니다.enderger : readme의 영어 번역에서 가장자리를 부드럽게하는 데 도움이되었습니다.