landing.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <!DOCTYPE html>
  2. <html lang="en-us">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>xmake</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <meta name="theme-color" content="#157878">
  8. <meta name="description" content="A cross-platform build utility based on Lua">
  9. <meta name="keywords" content="make,makefile,build,lua,cross-compile,linux" />
  10. <link rel="stylesheet" href="/assets/css/normalize.css">
  11. <link rel='stylesheet' href="/assets/css/opensans.css" type='text/css'>
  12. <link rel="stylesheet" href="/assets/css/cayman.css">
  13. <!-- baidu stats -->
  14. <script>
  15. var _hmt = _hmt || [];
  16. (function() {
  17. var hm = document.createElement("script");
  18. hm.src = "//hm.baidu.com/hm.js?eb3c91c672a001d78a113bfb8e42017a";
  19. var s = document.getElementsByTagName("script")[0];
  20. s.parentNode.insertBefore(hm, s);
  21. })();
  22. </script>
  23. </head>
  24. <body>
  25. <section class="page-header">
  26. <h1 class="project-name">xmake</h1>
  27. <h2 class="project-tagline">A cross-platform build utility based on Lua</h2>
  28. <a href="/#/home" class="btn">GET STARTED</a>
  29. <br><br>
  30. <iframe src="https://ghbtns.com/github-btn.html?user=tboox&repo=xmake&type=star&count=true" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
  31. <span class="donate" style="width: 100px">
  32. <img src="/assets/img/patreon.png">
  33. <a href="/pages/donation.html#donate">Support us</a>
  34. </span>
  35. <br><br>
  36. <ul id="translations">
  37. <li><a href="/cn/" class="nav-link">中文</a></li>
  38. <li class="delimiter">|</li>
  39. <li><a href="/" class="nav-link">English</a></li>
  40. </ul>
  41. </section>
  42. <section class="main-content">
  43. <h2 id="installation">Installation</h2>
  44. <h4 id="via-curl">via curl</h4>
  45. <div class="language-bash highlighter-rouge"><pre class="highlight"><code>bash &lt;<span class="o">(</span>curl -fsSL https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.sh<span class="o">)</span>
  46. </code></pre>
  47. </div>
  48. <h4 id="via-wget">via wget</h4>
  49. <div class="language-bash highlighter-rouge"><pre class="highlight"><code>bash &lt;<span class="o">(</span>wget https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.sh -O -<span class="o">)</span>
  50. </code></pre>
  51. </div>
  52. <h4 id="via-powershell">via powershell</h4>
  53. <div class="language-bash highlighter-rouge"><pre class="highlight"><code>Invoke-Expression <span class="o">(</span>Invoke-Webrequest <span class="s1">'https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.ps1'</span> -UseBasicParsing<span class="o">)</span>.Content
  54. </code></pre>
  55. </div>
  56. <h2 id="simple-description">Simple description</h2>
  57. <p><img src="/assets/img/index/showcode1.png" width="40%" /></p>
  58. <h2 id="package-dependences">Package dependences</h2>
  59. <p><img src="/assets/img/index/add_require.png" width="70%" /></p>
  60. <p>An official xmake package repository: <a href="https://github.com/xmake-io/xmake-repo">xmake-repo</a></p>
  61. <h2 id="build-project">Build project</h2>
  62. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake
  63. </code></pre>
  64. </div>
  65. <h2 id="run-target">Run target</h2>
  66. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake run console
  67. </code></pre>
  68. </div>
  69. <h2 id="debug-target">Debug target</h2>
  70. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake run -d console
  71. </code></pre>
  72. </div>
  73. <h2 id="configure-platform">Configure platform</h2>
  74. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake f -p <span class="o">[</span>windows|linux|macosx|android|iphoneos ..] -a <span class="o">[</span>x86|arm64 ..] -m <span class="o">[</span>debug|release]
  75. <span class="gp">$ </span>xmake
  76. </code></pre>
  77. </div>
  78. <h2 id="menu-configuration">Menu configuration</h2>
  79. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake f --menu
  80. </code></pre>
  81. </div>
  82. <p><img src="/assets/img/index/menuconf.png" width="80%" /></p>
  83. <h2 id="package-management">Package management</h2>
  84. <p><img src="/assets/img/index/package_manage.png" width="80%" /></p>
  85. <h2 id="support-platforms">Support platforms</h2>
  86. <ul>
  87. <li>Windows (x86, x64)</li>
  88. <li>Macosx (i386, x86_64)</li>
  89. <li>Linux (i386, x86_64, cross-toolchains …)</li>
  90. <li>Android (armv5te, armv6, armv7-a, armv8-a, arm64-v8a)</li>
  91. <li>iPhoneOS (armv7, armv7s, arm64, i386, x86_64)</li>
  92. <li>WatchOS (armv7k, i386)</li>
  93. <li>Mingw (i386, x86_64)</li>
  94. </ul>
  95. <h2 id="support-languages">Support Languages</h2>
  96. <ul>
  97. <li>C/C++</li>
  98. <li>Objc/Objc++</li>
  99. <li>Swift</li>
  100. <li>Assembly</li>
  101. <li>Golang</li>
  102. <li>Rust</li>
  103. <li>Dlang</li>
  104. <li>Cuda</li>
  105. </ul>
  106. <h2 id="support-projects">Support Projects</h2>
  107. <ul>
  108. <li>Static Library</li>
  109. <li>Shared Library</li>
  110. <li>Console</li>
  111. <li>Cuda Program</li>
  112. <li>Qt Application</li>
  113. <li>WDK Driver (umdf/kmdf/wdm)</li>
  114. <li>WinSDK Application</li>
  115. </ul>
  116. <h2 id="builtin-plugins">Builtin Plugins</h2>
  117. <h4 id="macros-script-plugin">Macros script plugin</h4>
  118. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake m -b <span class="c"># start to record</span>
  119. <span class="gp">$ </span>xmake f -p iphoneos -m debug
  120. <span class="gp">$ </span>xmake
  121. <span class="gp">$ </span>xmake f -p android --ndk<span class="o">=</span>~/files/android-ndk-r16b
  122. <span class="gp">$ </span>xmake
  123. <span class="gp">$ </span>xmake m -e <span class="c"># stop to record</span>
  124. <span class="gp">$ </span>xmake m . <span class="c"># playback commands</span>
  125. </code></pre>
  126. </div>
  127. <h4 id="run-the-custom-lua-script-plugin">Run the custom lua script plugin</h4>
  128. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake l ./test.lua
  129. <span class="gp">$ </span>xmake l -c <span class="s2">"print('hello xmake!')"</span>
  130. <span class="gp">$ </span>xmake l lib.detect.find_tool gcc
  131. </code></pre>
  132. </div>
  133. <h4 id="generate-ide-project-file-pluginmakefile-vs2002---vs2017--">Generate IDE project file plugin(makefile, vs2002 - vs2017 .. )</h4>
  134. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake project -k vs2017 -m <span class="s2">"debug,release"</span>
  135. </code></pre>
  136. </div>
  137. <h4 id="generate-doxygen-document-plugin">Generate doxygen document plugin</h4>
  138. <div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>xmake doxygen <span class="o">[</span>srcdir]
  139. </code></pre>
  140. </div>
  141. <h2 id="more-plugins">More Plugins</h2>
  142. <p>Please download and install from the plugins repository <a href="https://github.com/xmake-io/xmake-plugins">xmake-plugins</a>.</p>
  143. <h2 id="ideeditor-integration">IDE/Editor Integration</h2>
  144. <ul>
  145. <li><a href="https://github.com/xmake-io/xmake-vscode">xmake-vscode</a></li>
  146. </ul>
  147. <p><img src="https://raw.githubusercontent.com/tboox/xmake-vscode/master/res/problem.gif" width="60%" /></p>
  148. <ul>
  149. <li><a href="https://github.com/xmake-io/xmake-sublime">xmake-sublime</a></li>
  150. </ul>
  151. <p><img src="https://raw.githubusercontent.com/tboox/xmake-sublime/master/res/problem.gif" width="60%" /></p>
  152. <ul>
  153. <li><a href="https://github.com/xmake-io/xmake-idea">xmake-idea</a></li>
  154. </ul>
  155. <p><img src="https://raw.githubusercontent.com/tboox/xmake-idea/master/res/problem.gif" width="60%" /></p>
  156. <ul>
  157. <li><a href="https://github.com/luzhlon/xmake.vim">xmake.vim</a> (third-party, thanks <a href="https://github.com/luzhlon">@luzhlon</a>)</li>
  158. </ul>
  159. <h2 id="more-examples">More Examples</h2>
  160. <p>Debug and release modes:</p>
  161. <div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_rules</span><span class="p">(</span><span class="s2">"mode.debug"</span><span class="p">,</span> <span class="s2">"mode.release"</span><span class="p">)</span>
  162. <span class="n">target</span><span class="p">(</span><span class="s2">"console"</span><span class="p">)</span>
  163. <span class="n">set_kind</span><span class="p">(</span><span class="s2">"binary"</span><span class="p">)</span>
  164. <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.c"</span><span class="p">)</span>
  165. <span class="k">if</span> <span class="n">is_mode</span><span class="p">(</span><span class="s2">"debug"</span><span class="p">)</span> <span class="k">then</span>
  166. <span class="n">add_defines</span><span class="p">(</span><span class="s2">"DEBUG"</span><span class="p">)</span>
  167. <span class="k">end</span>
  168. </code></pre>
  169. </div>
  170. <p>Download and use remote packages:</p>
  171. <div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">add_requires</span><span class="p">(</span><span class="s2">"libuv master"</span><span class="p">,</span> <span class="s2">"ffmpeg"</span><span class="p">,</span> <span class="s2">"zlib 1.20.*"</span><span class="p">)</span>
  172. <span class="n">add_requires</span><span class="p">(</span><span class="s2">"tbox &gt;1.6.1"</span><span class="p">,</span> <span class="p">{</span><span class="n">optional</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="n">debug</span> <span class="o">=</span> <span class="kc">true</span><span class="p">})</span>
  173. <span class="n">target</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
  174. <span class="n">set_kind</span><span class="p">(</span><span class="s2">"shared"</span><span class="p">)</span>
  175. <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.c"</span><span class="p">)</span>
  176. <span class="n">add_packages</span><span class="p">(</span><span class="s2">"libuv"</span><span class="p">,</span> <span class="s2">"ffmpeg"</span><span class="p">,</span> <span class="s2">"tbox"</span><span class="p">,</span> <span class="s2">"zlib"</span><span class="p">)</span>
  177. </code></pre>
  178. </div>
  179. <p>Find and use local packages:</p>
  180. <div class="language-lua highlighter-rouge"><pre class="highlight"><code><span class="n">target</span><span class="p">(</span><span class="s2">"test"</span><span class="p">)</span>
  181. <span class="n">set_kind</span><span class="p">(</span><span class="s2">"shared"</span><span class="p">)</span>
  182. <span class="n">add_files</span><span class="p">(</span><span class="s2">"src/*.c"</span><span class="p">)</span>
  183. <span class="n">on_load</span><span class="p">(</span><span class="k">function</span> <span class="p">(</span><span class="n">target</span><span class="p">)</span>
  184. <span class="n">import</span><span class="p">(</span><span class="s2">"lib.detect.find_package"</span><span class="p">)</span>
  185. <span class="n">target</span><span class="p">:</span><span class="n">add</span><span class="p">(</span><span class="n">find_package</span><span class="p">(</span><span class="s2">"zlib"</span><span class="p">))</span>
  186. <span class="n">target</span><span class="p">:</span><span class="n">add</span><span class="p">(</span><span class="n">find_package</span><span class="p">(</span><span class="s2">"openssl"</span><span class="p">))</span>
  187. <span class="k">end</span><span class="p">)</span>
  188. </code></pre>
  189. </div>
  190. <h2 id="project-examples">Project Examples</h2>
  191. <p>Some projects using xmake:</p>
  192. <ul>
  193. <li><a href="https://github.com/tboox/tbox">tbox</a></li>
  194. <li><a href="https://github.com/tboox/gbox">gbox</a></li>
  195. <li><a href="https://github.com/tboox/vm86">vm86</a></li>
  196. <li><a href="https://github.com/tboox/awesome-xmake">more</a></li>
  197. </ul>
  198. <h2 id="example-video">Example Video</h2>
  199. <p><a href="https://asciinema.org/a/133693">
  200. <img src="https://asciinema.org/a/133693.png" width="60%" />
  201. </a></p>
  202. <h2 id="contacts">Contacts</h2>
  203. <ul>
  204. <li>Email:<a href="mailto:[email protected]">[email protected]</a></li>
  205. <li>Homepage:<a href="https://tboox.org">tboox.org</a></li>
  206. <li>Community:<a href="https://www.reddit.com/r/tboox/">/r/tboox on reddit</a></li>
  207. <li>ChatRoom:<a href="https://t.me/tbooxorg">Char on telegram</a>, <a href="https://gitter.im/tboox/tboox?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge">Chat on gitter</a></li>
  208. <li>Source Code:<a href="https://github.com/xmake-io/xmake">Github</a>, <a href="https://gitee.com/tboox/xmake">Gitee</a></li>
  209. </ul>
  210. <footer class="site-footer">
  211. <span class="site-footer-owner">Copyright (c) 2015-2018 <a href="https://tboox.org">tboox.org</a>.</span>
  212. <span class="site-footer-power">
  213. <span>
  214. <!--Site powered by <a href="https://jekyllrb.com/">Jekyll</a> & <a href="https://pages.coding.me">Coding Pages</a>.-->
  215. Site powered by <a href="https://jekyllrb.com/">Jekyll</a> & <a href="https://pages.github.com/">Github Pages</a>.
  216. </span>
  217. <span>
  218. Theme designed by <a href="https://github.com/pietromenna/jekyll-cayman-theme">cayman</a>.
  219. </span>
  220. </span>
  221. </footer>
  222. </section>
  223. </body>
  224. </html>