소스 검색

Update getting_started.md against README

It seems the Getting Started page is the same as the README.

However it was severely out of date.
Nuc1eoN 3 년 전
부모
커밋
2ef508c44f
1개의 변경된 파일266개의 추가작업 그리고 41개의 파일을 삭제
  1. 266 41
      getting_started.md

+ 266 - 41
getting_started.md

@@ -1,24 +1,24 @@
-## Sponsor
+## Supporting the project
 
-🙏 The xmake projects is a personal open source projects, their development need your help. If you would like to support the development of xmake, welcome to donate to us.
+Support this project by becoming a sponsor. Your logo will show up here with a link to your website. 🙏
 
-👉 [Sponsor Page](https://xmake.io/#/about/sponsor)
+- [Become a sponsor](https://xmake.io/#/about/sponsor)
 
-## Technical support
+<a href="https://opencollective.com/xmake#sponsors" target="_blank"><img src="https://opencollective.com/xmake/sponsors.svg?width=890"></a>
 
-You can also consider sponsoring us to get extra technical support services via [Github sponsor program](https://github.com/sponsors/waruqi),
-then you can get access to [xmake-io/technical-support](https://github.com/xmake-io/technical-support) repository to get more consulting related information.
+## Introduction
 
-- [x] Handling Issues with higher priority
-- [x] One-to-one technical consulting service
-- [x] Review your xmake.lua and provide suggestions for improvement
+xmake is a lightweight cross-platform build utility based on Lua. It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, the configuration syntax is more concise and intuitive. It is very friendly to novices and can quickly get started in a short time. Let users focus more on actual project development.
 
-## Who is using Xmake?
+It can compile the project directly like Make/Ninja, or generate project files like CMake/Meson, and it also has a built-in package management system to help users solve the integrated use of C/C++ dependent libraries.
 
-If you are using xmake, please click to edit [this page](https://github.com/xmake-io/xmake-docs/blob/master/about/who_is_using_xmake.md) to submit information to the following list to let more users know how many users are using xmake.
+```
+Xmake = Build backend + Project Generator + Package Manager
+```
 
-This also let users to use xmake more confidently, and we will also have more motivation to maintain it continuously,
-so that the xmake project and the community will grow stronger.
+If you want to know more, please refer to: [Documents](https://xmake.io/#/getting_started), [Github](https://github.com/xmake-io/xmake) and [Gitee](https://gitee.com/tboox/xmake) and also welcome to join our [community](https://xmake.io/#/about/contact).
+
+![](https://xmake.io/assets/img/index/xmake-basic-render.gif)
 
 ## Installation
 
@@ -115,21 +115,86 @@ The test project: [xmake-core](https://github.com/xmake-io/xmake/tree/master/cor
 
 <img src="https://xmake.io/assets/img/index/package_arch.png" width="650px" />
 
+### Supported package repositories
+
+* Official package repository [xmake-repo](https://github.com/xmake-io/xmake-repo) (tbox >1.6.1)
+* Official package manager [Xrepo](https://github.com/xmake-io/xrepo)
+* [User-built repositories](https://xmake.io/#/package/remote_package?id=using-self-built-private-package-repository)
+* Conan (conan::openssl/1.1.1g)
+* Conda (conda::libpng 1.3.67)
+* Vcpkg (vcpkg:ffmpeg)
+* Homebrew/Linuxbrew (brew::pcre2/libpcre2-8)
+* Pacman on archlinux/msys2 (pacman::libcurl)
+* Apt on ubuntu/debian (apt::zlib1g-dev)
+* Clib (clib::clibs/[email protected])
+* Dub (dub::log 0.4.3)
+* Portage on Gentoo/Linux (portage::libhandy)
+* Nimble for nimlang (nimble::zip >1.3)
+
+### Package management features
+
+* The official repository provides nearly 500+ packages, one-click compilation on all platforms
+* Full platform package support, support for cross-compiled dependent package integration
+* Support package virtual environment, `xrepo env shell`
+* Precompiled package acceleration for windows
+* Support self-built package repositories, private repository deployment
+* Third-party package repository support, such as: vcpkg, conan, conda, etc.
+* Support to pull using remote toolchain automatically
+* Support to lock package dependency
+
 ## Supported platforms
 
 * Windows (x86, x64)
-* macOS (i386, x86_64)
+* macOS (i386, x86_64, arm64)
 * Linux (i386, x86_64, cross-toolchains ..)
 * *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)
 * MSYS (i386, x86_64)
-* MinGW (i386, x86_64)
+* MinGW (i386, x86_64, arm, arm64)
 * Cygwin (i386, x86_64)
-* SDCC (stm8, mcs51, ..)
+* Wasm (wasm32)
 * Cross (cross-toolchains ..)
 
+## Supported toolchains
+
+```bash
+$ xmake show -l toolchains
+xcode         Xcode IDE
+vs            VisualStudio IDE
+yasm          The Yasm Modular Assembler
+clang         A C language family frontend for LLVM
+go            Go Programming Language Compiler
+dlang         D Programming Language Compiler
+gfortran      GNU Fortran Programming Language Compiler
+zig           Zig Programming Language Compiler
+sdcc          Small Device C Compiler
+cuda          CUDA Toolkit
+ndk           Android NDK
+rust          Rust 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
+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
+```
+
 ## Supported Languages
 
 * C
@@ -140,7 +205,28 @@ The test project: [xmake-core](https://github.com/xmake-io/xmake/tree/master/cor
 * Golang
 * Rust
 * Dlang
+* Fortran
 * Cuda
+* Zig
+* Vala
+* Pascal
+* Nim
+
+## Supported Features
+
+* The configuration grammar is simple and easy to use
+* Quick installation, without any dependencies
+* One-click compilation for all platforms
+* Support cross compilation, intelligent analysis of cross tool chain information
+* Extremely fast, multi-task parallel compilation support
+* C++20 Module support
+* Support cross-platform C/C++ dependency package quick integration, built-in package manager
+* Multi-language mixed compilation support
+* Rich plug-in support, providing various project generators, such as: vs/makefile/cmakelists/compile_commands to generate plugins
+* REPL interactive execution support
+* Incremental compilation support, automatic analysis of header files
+* Quick switching and customization support of tool chain
+* A large number of expansion modules support
 
 ## Supported Projects
 
@@ -152,10 +238,17 @@ The test project: [xmake-core](https://github.com/xmake-io/xmake/tree/master/cor
 * WDK Driver (umdf/kmdf/wdm)
 * WinSDK Application
 * MFC Application
+* iOS/MacOS Application (Support .metal)
+* Framework and Bundle Program (iOS/MacOS)
+* SWIG Modules (Lua, python, ...)
+* Luarocks Modules
+* Protobuf Program
+* Lex/yacc program
+* C++20 Modules
 
 ## More Examples
 
-Debug and release modes:
+#### Debug and release modes
 
 ```lua
 add_rules("mode.debug", "mode.release")
@@ -168,7 +261,7 @@ target("console")
     end
 ```
 
-Custom scripts:
+#### Custom scripts
 
 ```lua
 target("test")
@@ -180,18 +273,22 @@ target("test")
     end)
 ```
 
+#### Automatic integration of dependent packages
+
 Download and use packages in [xmake-repo](https://github.com/xmake-io/xmake-repo) or third-party repositories:
 
 ```lua
 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}) 
+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 Program:
+In addition, we can also use the [xrepo](https://github.com/xmake-io/xrepo) command to quickly install dependent packages.
+
+#### Qt QuickApp Program
 
 ```lua
 target("test")
@@ -200,22 +297,22 @@ target("test")
     add_files("src/qml.qrc")
 ```
 
-Cuda Program:
+#### Cuda Program
 
 ```lua
 target("test")
     set_kind("binary")
     add_files("src/*.cu")
     add_cugencodes("native")
-    add_cugencodes("compute_30")
+    add_cugencodes("compute_35")
 ```
 
-WDK/UMDF Driver Program:
+#### WDK/UMDF Driver Program
 
 ```lua
 target("echo")
     add_rules("wdk.driver", "wdk.env.umdf")
-    add_files("driver/*.c") 
+    add_files("driver/*.c")
     add_files("driver/*.inx")
     add_includedirs("exe")
 
@@ -226,6 +323,84 @@ target("app")
 
 More wdk driver program examples (umdf/kmdf/wdm), please see [WDK Program Examples](https://xmake.io/#/guide/project_examples?id=wdk-driver-program)
 
+#### iOS/MacOS Application
+
+```lua
+target("test")
+    add_rules("xcode.application")
+    add_files("src/*.m", "src/**.storyboard", "src/*.xcassets")
+    add_files("src/Info.plist")
+```
+
+#### Framework and Bundle Program (iOS/MacOS)
+
+```lua
+target("test")
+    add_rules("xcode.framework") -- or xcode.bundle
+    add_files("src/*.m")
+    add_files("src/Info.plist")
+```
+
+#### OpenMP Program
+
+```lua
+add_requires("openmp")
+target("loop")
+    set_kind("binary")
+    add_files("src/*.cpp")
+    add_packages("openmp")
+```
+
+#### Zig Program
+
+```lua
+target("test")
+    set_kind("binary")
+    add_files("src/main.zig")
+```
+
+### Automatically fetch remote toolchain
+
+#### fetch the special version of llvm
+
+We use clang in llvm-10 to compile the project.
+
+```lua
+add_requires("llvm 10.x", {alias = "llvm-10"})
+target("test")
+    set_kind("binary")
+    add_files("src/*.c)
+    set_toolchains("llvm@llvm-10")
+```
+
+#### Fetch cross-compilation toolchain
+
+We can also pull the specified cross-compilation tool chain to compile the project.
+
+```lua
+add_requires("muslcc")
+target("test")
+    set_kind("binary")
+    add_files("src/*.c)
+    set_toolchains("@muslcc")
+```
+
+#### Fetch toolchain and packages
+
+We can also use the specified muslcc cross-compilation toolchain to compile and integrate all dependent packages
+
+```lua
+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")
+```
+
 ## Plugins
 
 #### Generate IDE project file plugin(makefile, vs2002 - vs2019 .. )
@@ -247,10 +422,10 @@ $ xmake l lib.detect.find_tool gcc
 $ xmake l
 > print("hello xmake!")
 > {1, 2, 3}
-< { 
+< {
     1,
     2,
-    3 
+    3
   }
 ```
 
@@ -274,31 +449,81 @@ Please download and install more other plugins from the plugins repository [xmak
 
 * [xmake.vim](https://github.com/luzhlon/xmake.vim) (third-party, thanks [@luzhlon](https://github.com/luzhlon))
 
-* [xmake-gradle](https://github.com/xmake-io/xmake-gradle): A gradle plugin that integrates xmake seamlessly
+* [xmake-visualstudio](https://github.com/HelloWorld886/xmake-visualstudio) (third-party, thanks [@HelloWorld886](https://github.com/HelloWorld886))
+
+* [xmake-qtcreator](https://github.com/Arthapz/xmake-project-manager) (third-party, thanks [@Arthapz](https://github.com/Arthapz))
 
-## Project Examples
+### XMake Gradle Plugin (JNI)
+
+We can uses [xmake-gradle](https://github.com/xmake-io/xmake-gradle) plugin to compile JNI library in gradle.
+
+```
+plugins {
+  id 'org.tboox.gradle-xmake-plugin' version '1.1.4'
+}
+
+android {
+    externalNativeBuild {
+        xmake {
+            path "jni/xmake.lua"
+        }
+    }
+}
+```
 
-Some projects using xmake:
+The `xmakeBuild` will be injected to `assemble` task automatically if the gradle-xmake-plugin has been applied.
+
+```console
+$ ./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 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
+```
 
-* [tbox](https://github.com/tboox/tbox)
-* [gbox](https://github.com/tboox/gbox)
-* [vm86](https://github.com/tboox/vm86)
-* [more](https://github.com/xmake-io/awesome-xmake)
+## Technical Support
 
-## Example Video
+We also provide paid technical support to help users quickly solve related problems. For details, please click the image link below:
 
-<a href="https://asciinema.org/a/133693">
-<img src="https://asciinema.org/a/133693.png" width="650px" />
+<a href="https://xscode.com/waruqi/xmake">
+<img src="https://tboox.org/assets/img/xmake-xscode.png" width="650px" />
 </a>
 
+Or you can also consider sponsoring us to get technical support services, [[Become a sponsor](https://xmake.io/#/about/sponsor)]
+
+## Who is using Xmake?
+
+Please click [User List](https://xmake.io/#/about/who_is_using_xmake) to view the complete user list.
+
+If you are using xmake, welcome to submit the information to the above list through PR, so that let more users can known how many users are using xmake.
+
+Ihis also let users to use xmake more confidently, and we will also have more motivation to maintain it continuously,
+so that the xmake project and the community will grow stronger.
+
 ## Contacts
 
 * Email:[[email protected]](mailto:[email protected])
-* Homepage:[tboox.org](https://tboox.org)
-* Community:[/r/tboox on reddit](https://www.reddit.com/r/xmake/)
-* ChatRoom:[Char on telegram](https://t.me/tbooxorg), [Chat on gitter](https://gitter.im/xmake-io/xmake?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+* Homepage:[xmake.io](https://xmake.io)
+* Community
+  - [Chat on reddit](https://www.reddit.com/r/xmake/)
+  - [Chat on telegram](https://t.me/tbooxorg)
+  - [Chat on gitter](https://gitter.im/xmake-io/xmake?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+  - [Chat on discord](https://discord.gg/xmake)
+  - Chat on QQ Group: 343118190, 662147501
 * Source Code:[Github](https://github.com/xmake-io/xmake), [Gitee](https://gitee.com/tboox/xmake)
-* QQ Group: 343118190(full), 662147501
 * Wechat Public: tboox-os
 
 ## Thanks
@@ -309,4 +534,4 @@ This project exists thanks to all the people who have [contributed](CONTRIBUTING
 * [TitanSnow](https://github.com/TitanSnow): provide the xmake [logo](https://github.com/TitanSnow/ts-xmake-logo) and install scripts
 * [uael](https://github.com/uael): provide the semantic versioning library [sv](https://github.com/uael/sv)
 * [OpportunityLiu](https://github.com/OpportunityLiu): improve cuda, tests and ci
-
+* [xq144](https://github.com/xq114): Improve `xrepo env shell`, and contribute a lot of packages to the [xmake-repo](https://github.com/xmake-io/xmake-repo) repository.