-
Notifications
You must be signed in to change notification settings - Fork 4
/
Getting-meson.html
338 lines (302 loc) · 13.3 KB
/
Getting-meson.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
<!DOCTYPE html>
<html lang="en">
<head>
<base href=".">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Getting Meson</title>
<link rel="stylesheet" href="assets/css/dark-frontend.css" type="text/css" title="dark">
<link rel="alternate stylesheet" href="assets/css/light-frontend.css" type="text/css" title="light">
<link rel="stylesheet" href="assets/css/bootstrap-toc.min.css" type="text/css">
<link rel="stylesheet" href="assets/css/jquery.mCustomScrollbar.min.css">
<link rel="stylesheet" href="assets/js/search/enable_search.css" type="text/css">
<link rel="stylesheet" href="assets/css/prism-tomorrow.css" type="text/css" title="dark">
<link rel="alternate stylesheet" href="assets/css/prism.css" type="text/css" title="light">
<script src="assets/js/mustache.min.js"></script>
<script src="assets/js/jquery.js"></script>
<script src="assets/js/bootstrap.js"></script>
<script src="assets/js/scrollspy.js"></script>
<script src="assets/js/typeahead.jquery.min.js"></script>
<script src="assets/js/search.js"></script>
<script src="assets/js/compare-versions.js"></script>
<script src="assets/js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="assets/js/bootstrap-toc.min.js"></script>
<script src="assets/js/jquery.touchSwipe.min.js"></script>
<script src="assets/js/anchor.min.js"></script>
<script src="assets/js/tag_filtering.js"></script>
<script src="assets/js/language_switching.js"></script>
<script src="assets/js/styleswitcher.js"></script>
<script src="assets/js/lines_around_headings.js"></script>
<script src="assets/js/prism-core.js"></script>
<script src="assets/js/prism-autoloader.js"></script>
<script src="assets/js/prism_autoloader_path_override.js"></script>
<script src="assets/js/prism-keep-markup.js"></script>
<script src="assets/js/trie.js"></script>
<link rel="icon" type="image/png" href="assets/images/favicon.png">
<link rel="shortcut icon" href="assets/images/favicon.png">
</head>
<body class="no-script
">
<script>
$('body').removeClass('no-script');
</script>
<nav class="navbar navbar-fixed-top navbar-default" id="topnav">
<div class="container-fluid">
<div class="navbar-right">
<a id="toc-toggle">
<span class="glyphicon glyphicon-menu-right"></span>
<span class="glyphicon glyphicon-menu-left"></span>
</a>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-wrapper" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span title="light mode switch" class="glyphicon glyphicon-sunglasses pull-right" id="lightmode-icon"></span>
<form class="navbar-form pull-right" id="navbar-search-form">
<div class="form-group has-feedback">
<input type="text" class="form-control input-sm" name="search" id="sidenav-lookup-field" placeholder="search" disabled>
<span class="glyphicon glyphicon-search form-control-feedback" id="search-mgn-glass"></span>
</div>
</form>
</div>
<div class="navbar-header">
<a id="sidenav-toggle">
<span class="glyphicon glyphicon-menu-right"></span>
<span class="glyphicon glyphicon-menu-left"></span>
</a>
<a id="home-link" href="index.html" class="hotdoc-navbar-brand">
<img src="assets/images/meson_logo.png" alt="Home">
</a>
</div>
<div class="navbar-collapse collapse" id="navbar-wrapper">
<ul class="nav navbar-nav" id="menu">
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Modules <span class="caret"></span>
</a>
<ul class="dropdown-menu" id="modules-menu">
<li>
<a href="CMake-module.html">CMake</a>
</li>
<li>
<a href="Cuda-module.html">CUDA</a>
</li>
<li>
<a href="Dlang-module.html">Dlang</a>
</li>
<li>
<a href="External-Project-module.html">External Project</a>
</li>
<li>
<a href="Fs-module.html">Filesystem</a>
</li>
<li>
<a href="Gnome-module.html">GNOME</a>
</li>
<li>
<a href="Hotdoc-module.html">Hotdoc</a>
</li>
<li>
<a href="i18n-module.html">i18n</a>
</li>
<li>
<a href="Icestorm-module.html">Icestorm</a>
</li>
<li>
<a href="Java-module.html">Java</a>
</li>
<li>
<a href="Keyval-module.html">Keyval</a>
</li>
<li>
<a href="Pkgconfig-module.html">Pkgconfig</a>
</li>
<li>
<a href="Python-3-module.html">Python 3</a>
</li>
<li>
<a href="Python-module.html">Python</a>
</li>
<li>
<a href="Qt4-module.html">Qt4</a>
</li>
<li>
<a href="Qt5-module.html">Qt5</a>
</li>
<li>
<a href="Qt6-module.html">Qt6</a>
</li>
<li>
<a href="Rust-module.html">Rust</a>
</li>
<li>
<a href="Simd-module.html">Simd</a>
</li>
<li>
<a href="SourceSet-module.html">SourceSet</a>
</li>
<li>
<a href="Wayland-module.html">Wayland</a>
</li>
<li>
<a href="Windows-module.html">Windows</a>
</li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Quick References <span class="caret"></span>
</a>
<ul class="dropdown-menu" id="quick-refs-menu">
<li>
<a href="Reference-manual.html">Functions</a>
</li>
<li>
<a href="Build-options.html">Options</a>
</li>
<li>
<a href="Configuration.html">Configuration</a>
</li>
<li>
<a href="Dependencies.html">Dependencies</a>
</li>
<li>
<a href="Unit-tests.html">Tests</a>
</li>
<li>
<a href="Syntax.html">Syntax</a>
</li>
</ul>
</li>
</ul>
<div class="hidden-xs hidden-sm navbar-text navbar-center">
<p><b>The Meson Build System</b></p>
</div>
</div>
</div>
</nav>
<main>
<div data-extension="core" data-hotdoc-in-toplevel="True" data-hotdoc-project="Meson-documentation" data-hotdoc-ref="Getting-meson.html" class="page_container" id="page-wrapper">
<script src="assets/js/utils.js"></script>
<div class="panel panel-collapse oc-collapsed" id="sidenav" data-hotdoc-role="navigation">
<script src="assets/js/full-width.js"></script>
<div id="sitenav-wrapper">
<iframe src="hotdoc-sitemap.html" id="sitenav-frame"></iframe>
</div>
</div>
<div id="body">
<div id="main">
<div id="page-description" data-hotdoc-role="main">
<h1 id="getting-meson">Getting Meson</h1>
<p>Meson is implemented in Python 3, and requires 3.7 or newer. If your
operating system provides a package manager, you should install it
with that. For platforms that don't have a package manager, you need
to download it from <a href="https://www.python.org/downloads/">Python's home page</a>. See below for
<a href="Getting-meson.html#platformspecific-install-quirks">platform-specific Python3 quirks</a>.</p>
<h2 id="downloading-meson">Downloading Meson</h2>
<p>Meson releases can be downloaded from the <a href="https://github.com/mesonbuild/meson/releases">GitHub release page</a>, and
you can run <code>./meson.py</code> from inside a release or the git repository
itself without doing anything special.</p>
<p>On Windows, if you did not install Python with the installer options
that make Python scripts executable, you will have to run <code>python /path/to/meson.py</code>, where <code>python</code> is Python 3.7 or newer.</p>
<p>The newest development code can be obtained directly from <a href="https://github.com/mesonbuild/meson">Git</a>, and
we strive to ensure that it will always be working and usable. All
commits go through a pull-request process that runs CI and tests
several platforms.</p>
<h3 id="packing-meson-into-a-zipapp">Packing Meson into a zipapp</h3>
<p>After downloading the release, you can create a standalone single-file
executable for Meson by running the script:</p>
<pre><code>./packaging/create_zipapp.py --outfile meson.pyz --interpreter '/usr/bin/env python3' <source checkout>
</code></pre>
<p>This uses python's native support for <a href="https://docs.python.org/3/library/zipapp.html">zipapp</a>.</p>
<h2 id="installing-meson-with-pip">Installing Meson with pip</h2>
<p>Meson is available in the <a href="https://pypi.python.org/pypi/meson/">Python Package Index</a> and can be installed
with <code>pip3 install --user meson</code>. This does not require any special
privileges. This will install the package in <code>~/.local/</code>, so you will
have to add <code>~/.local/bin</code> to your <code>PATH</code>. If you are using Meson only
for local development this should be all you need.</p>
<p>If you need to install your project in system directories, this
approach will not work as executable installed in this way are not
available when <code>sudo</code> is used. You can install Meson so it can be used
by every user with <code>sudo pip3 install meson</code>. It is generally not
recommended to do this, but instead use the version provided by distro
packages.</p>
<p>If you must install Meson with <code>sudo pip3</code> make sure to uninstall any
distro version first. Having multiple versions of any program in
system directories can lead to problems.</p>
<h2 id="installing-meson-and-ninja-with-the-msi-installer">Installing Meson and Ninja with the MSI installer</h2>
<p>We provide an MSI installer on the <a href="https://github.com/mesonbuild/meson/releases">GitHub release page</a> that can be
used to install both Meson and Ninja at once for Windows. It also
contains an embedded copy of Python, so scripts that use the <a href="Python-module.html">Python
module</a> and do not have any external dependencies
will continue to work as expected.</p>
<p>Please note that this is a new feature, so bug reports are expected
and welcome!</p>
<h2 id="dependencies">Dependencies</h2>
<p>In the most common case, you will need the <a href="https://ninja-build.org/">Ninja executable</a> for
using the <code>ninja</code> backend, which is the default in Meson. This backend
can be used on all platforms and with all toolchains, including GCC,
Clang, Visual Studio, MinGW, ICC, ARMCC, etc.</p>
<p>You can use the version provided by your package manager if possible,
otherwise download the binary executable from the <a href="https://github.com/ninja-build/ninja/releases">Ninja project's
release page</a>.</p>
<p>If you will only use the Visual Studio backend (<code>--backend=vs</code>) to
generate Visual Studio solutions on Windows or the XCode backend
(<code>--backend=xcode</code>) to generate XCode projects on macOS, you do not
need Ninja.</p>
<h1 id="platformspecific-install-quirks">Platform-specific install quirks</h1>
<h2 id="windows-python3-quirks">Windows Python3 quirks</h2>
<p>When installing Python 3, it is highly recommended (but not required)
that you select the installer options as follows:</p>
<p><img src="images/py3-install-1.png" alt="installer step 1" title="Enable 'Add Python 3.6 to PATH' and click 'Customize installation'" id="installer-step-1">
<img src="images/py3-install-2.png" alt="installer step 2" title="Optional Features: ensure 'pip' is enabled" id="installer-step-2">
<img src="images/py3-install-3.png" alt="installer step 3" title="Advanced Options: enable 'Install for all users'" id="installer-step-3"></p>
<p>With this, you will have <code>python</code> and <code>pip</code> in <code>PATH</code>, and you can
install Meson with pip. You will also be able to directly run <code>meson</code>
in any shell on Windows instead of having to run <code>py -3</code> with the full
path to the <code>meson.py</code> script.</p>
<h2 id="msys2-python3-quirks">MSYS2 Python3 quirks</h2>
<p>If you are using MSYS2 on Windows as your development environment,
please make sure that you <strong>do not use</strong> the <code>msys/python</code> package to
provide Python 3. Use either <code>mingw32/mingw-w64-i686-python3</code> or
<code>mingw64/mingw-w64-x86_64-python3</code> depending on which MinGW target you
are building for.</p>
</div>
<div id="subpages">
<p><b>Subpages:</b></p>
<div class="thumb-subpages">
</div>
<p>
<a href="Getting-meson_zh.html">获取Meson</a>
</p>
<p>
<a href="Getting-meson_ptbr.html">Obtendo o Meson</a>
</p>
</div>
</div>
<div id="search_results">
<p>The results of the search are</p>
</div>
<div id="footer">
<hr>
<div class="license-description">
Website licensing information are available on the <a href="legal.html">Legal</a> page.
</div>
</div>
</div>
<div id="toc-column">
<div class="edit-button">
<a href="https://github.com/mesonbuild/meson/edit/master/docs/markdown/Getting-meson.md" data-hotdoc-role="edit-button">Edit on GitHub</a>
</div>
<div id="toc-wrapper">
<nav id="toc"></nav>
</div>
</div>
</div>
</main>
<script src="assets/js/navbar_offset_scroller.js"></script>
</body>
</html>