1143:
1676:
209:
139:
95:
29:
41:
571:
629:
538:
of source files. By requiring all source files to be listed in the build definition files, the build definition file timestamps are sufficient to determine whether the set of source files has changed, thereby ensuring that removed source files are detected. CMake supports globbing, but recommends
401:, such that builtin types like library, executable, string, and lists thereof, are non-interchangeable. In particular, unlike Make, the list type does not split strings on whitespace. Thus, whitespace and other characters in filenames and program arguments are handled cleanly.
387:, but is not Python: It is designed such that it can be reimplemented in any other language; for example, muon is a C implementation, and Meson++ is a C++ implementation. The dependency on Python is an implementation detail.
1384:
Note: We do not recommend using GLOB to collect a list of source files from your source tree. If no CMakeLists.txt file changes when a source is added or removed, the generated build system cannot know when to ask CMake to
1235:
Meson aims to optimize programmer productivity by providing simple, out-of-the-box support for modern software development tools and practices, such as unit tests, coverage reports, Valgrind, CCache and the
530:
Unlike bare Make, the separate configure step ensures that changes to arguments, environment variables and command output are not partially applied in subsequent builds, which would lead to a stale build.
1411:
Recursive Make is considered harmful for very good reasons (Miller 1998); it is not possible to accurately track dependencies when the build system is constructed of separate components that invoke each
527:
As with any typical buildsystem, correct incremental builds are the most significant speed feature (because all incremental progress is discarded whenever the user is forced to do a clean build).
892:, CMake, and project-specific lookups, but this only finds installed dependencies, which Meson can not do anything about. Alternatively, or as a fallback, a dependency can be provided as a
394:, and can therefore not express an arbitrary program. Instead, arbitrary build steps beyond compiling supported languages can be represented as custom targets.
1701:
1711:
1148:
1502:
1166:
1042:
672:
610:
588:
639:
592:
305:
261:
approach, promoting standard development tools and practice instead of providing unlimited flexibility to the user. Meson is
384:
266:
262:
258:
152:
1471:
896:โ a Meson project within another, either contained or as a download link, possibly with patches. This lets Meson resolve
1609:
824:
555:
118:
1706:
333:
329:
325:
86:
176:
1397:
1691:
1696:
1086:
654:
317:
297:
1595:
650:
581:
368:
344:
352:
1561:
911:
Meson supports Meson and CMake subprojects. A Meson build file may also refer to the WrapDB service.
815:
A stated goal of Meson is to facilitate modern development practices. As such, Meson knows how to do
364:
208:
94:
559:
391:
171:
1273:
1230:
905:
535:
270:
188:
1029:
Cross compilation requires extra configuration, which Meson supports in the form of a separate
1516:
290:
1623:
1547:
1287:
1109:
562:
are supported, but require configuration. Debug builds are without optimization by default.
254:
224:
183:
159:
28:
1488:
900:
for the convenience of casual users who want to compile the project, but may contribute to
1161:
1074:
964:
897:
138:
1675:
1210:
1185:
40:
1424:
901:
551:
398:
164:
1379:
1685:
1450:
820:
1082:
904:
if a common installed dependency could have been used instead. The mode favored by
816:
547:
1610:"Mesa Developers Move Closer To Dropping Autotools Build System In Favor Of Meson"
1051:
570:
383:
The syntax of Meson's build description files (the Meson language) borrows from
313:
1575:
1530:
1138:
1128:
941:
889:
356:
54:
1344:
1405:
1067:
1055:
1637:
46:
915:
Comparison of dependency resolution use cases in different build systems
1215:
1093:
1078:
595: in this section. Unsourced material may be challenged and removed.
321:
1248:
1100:
was improved to help various scientific projects in their switch from
127:
1580:
1472:"Dependencies with custom lookup functionality โ Meson documentation"
1097:
765:
749:
543:
507:
Can run arbitrary commands at build time as recipes of custom targets
360:
1651:
1365:
657:. Statements consisting only of original research should be removed.
554:
to skip relinking executables against the library when there are no
1059:
1050:
has made it a goal to port its projects to Meson. As of late 2017,
301:
1156:
1105:
1081:
relies on Meson since dropping
Autotools in version 234, and also
1047:
719:
The target that runs tests depends on the tests being built (e.g.
372:
348:
286:
1308:
355:
and other compilers, including non-traditional compilers such as
1167:
List of build automation software ยง Build script generation
1124:
1063:
309:
282:
888:
Meson can automatically find and use external dependencies via
622:
564:
827:
etc without the programmer having to write support for this.
702:
Prohibits stale builds (partial rebuild against input change)
1562:"GNOME 3.26 Beta Debuts: More Meson Porting, Wayland Action"
233:
1669:
242:
199:
1131:; the Meson homepage lists further projects using Meson.
866:
Set correct library installation directory on x86_64 Unix
491:
Can read output of arbitrary commands (at configure time)
1503:"Meson and 3rd party dependencies. Only one correct way"
646:
546:
automatically if installed. It also detects changes to
1322:
971:
Finding installed dependencies, with download fallback
1211:"Making build systems not suck (linux.conf.au video)"
367:
as the primary backend buildsystem, but can also use
245:
239:
1548:"GNOME Goal: Port modules to use Meson build system"
1054:itself exclusively requires Meson after abandoning
1013:
978:
859:
230:
227:
194:
182:
170:
158:
148:
117:
85:
63:
53:
1002:Facilitate use as an auto-downloadable dependency
714:(an idiomatic pattern) is broken in this respect
1596:"Meson Support Has Landed In The X.Org Server"
1033:, which can be external to the Meson project.
1542:
1540:
8:
21:
1517:"FetchContent โ CMake 3.15.7 Documentation"
1123:Other notable projects using Meson include
236:
1674:
1249:"mesonbuild/meson: The Meson Build System"
1205:
1203:
207:
137:
93:
39:
27:
20:
673:Learn how and when to remove this message
611:Learn how and when to remove this message
920:
829:
684:
472:non-standard extension on some variants
403:
390:The Meson language is intentionally not
257:(compiling) of software. Meson adopts a
1483:
1481:
1451:"CMake support for precompiled headers"
1425:"Make test does not depend on make all"
1398:"Non-recursive Make Considered Harmful"
1177:
281:Being written in Python, Meson runs on
955:Downloading dependencies automatically
1303:
1301:
1299:
1297:
7:
1149:Free and open-source software portal
593:adding citations to reliable sources
534:Like Ninja, Meson does not support
285:-like operating systems, including
1702:Free software programmed in Python
1309:"Meson Frequently Asked Questions"
1077:projects have switched to Meson.
14:
1712:Software using the Apache license
1043:Category:Software that uses Meson
1005:Can be used as a Meson subproject
1231:"High productivity build system"
1141:
627:
569:
539:against it for the same reason.
293:and on other operating systems.
223:
1624:"How to build SciPy with Meson"
1489:"Wrap dependency system manual"
1108:. Meson can also be used as a
876:./configure --libdir=/usr/lib64
580:needs additional citations for
477:Extensible via custom functions
1652:"List of projects using Meson"
1638:"meson-python package on PyPI"
1058:, and central components like
938:Finding installed dependencies
1:
296:Meson supports the languages
263:free and open-source software
259:convention over configuration
1576:"Drop support for autotools"
1343:Baker, Dylan (28 May 2021).
781:Symbol-table-aware relinking
708:If not globbing source files
444:whitespace-delimited string
336:, and has a mechanism named
705:Yes (unless there are bugs)
653:the claims made and adding
1728:
1040:
977:CMake module/pkg-config +
737:is forbidden, because the
735:add_dependencies(test all)
441:semicolon-delimited string
177:Software development tools
1345:"dcbaker/meson-plus-plus"
1070:can be built with Meson.
988:pkg-config file generator
253:) is a software tool for
113:
81:
38:
26:
1112:backend to build Python
947:CMake module, pkg-config
340:to handle dependencies.
974:pkg-config + subproject
908:is therefore fallback.
369:Microsoft Visual Studio
345:GNU Compiler Collection
255:automating the building
16:Build automation system
1104:to Meson, for example
1089:were ported to Meson.
825:link time optimization
397:The Meson language is
69:; 11 years ago
1429:Kitware issue tracker
1011:With registration to
523:Speed and correctness
1380:"CMake FILE command"
1092:Meson's support for
589:improve this article
353:Microsoft Visual C++
100:; 7 days ago
1531:"Cross compilation"
1188:. 20 September 2024
795:Precompiled headers
741:target is reserved.
560:Precompiled headers
449:Dictionary datatype
363:. The project uses
98:/ 20 September 2024
23:
1707:Meson build system
1274:"Reference manual"
638:possibly contains
271:Apache License 2.0
189:Apache License 2.0
45:Meson configuring
1025:Cross compilation
1022:
1021:
881:
880:
808:
807:
683:
682:
675:
640:original research
621:
620:
613:
520:
519:
291:Microsoft Windows
216:
215:
105:20 September 2024
67:2 March 2013
1719:
1692:Build automation
1678:
1673:
1672:
1670:Official website
1656:
1655:
1648:
1642:
1641:
1634:
1628:
1627:
1620:
1614:
1613:
1606:
1600:
1599:
1592:
1586:
1585:
1572:
1566:
1565:
1558:
1552:
1551:
1544:
1535:
1534:
1527:
1521:
1520:
1513:
1507:
1506:
1499:
1493:
1492:
1485:
1476:
1475:
1468:
1462:
1461:
1459:
1457:
1447:
1441:
1440:
1438:
1436:
1421:
1415:
1414:
1402:
1394:
1388:
1387:
1376:
1370:
1369:
1362:
1356:
1355:
1353:
1351:
1340:
1334:
1333:
1331:
1329:
1319:
1313:
1312:
1305:
1292:
1291:
1284:
1278:
1277:
1270:
1264:
1263:
1261:
1259:
1245:
1239:
1238:
1227:
1221:
1220:
1207:
1198:
1197:
1195:
1193:
1182:
1151:
1146:
1145:
1144:
1119:
1103:
1018:
1015:
980:
965:Cargo dependency
944:, CMake packages
921:
877:
872:Not standardized
861:
849:
830:
740:
736:
726:
722:
685:
678:
671:
667:
664:
658:
655:inline citations
631:
630:
623:
616:
609:
605:
602:
596:
573:
565:
552:shared libraries
496:
404:
277:Interoperability
252:
251:
248:
247:
244:
241:
238:
235:
232:
229:
212:
211:
204:
201:
160:Operating system
141:
136:
133:
131:
129:
108:
106:
101:
97:
77:
75:
70:
43:
31:
24:
1727:
1726:
1722:
1721:
1720:
1718:
1717:
1716:
1697:Compiling tools
1682:
1681:
1668:
1667:
1664:
1659:
1650:
1649:
1645:
1636:
1635:
1631:
1622:
1621:
1617:
1608:
1607:
1603:
1594:
1593:
1589:
1574:
1573:
1569:
1560:
1559:
1555:
1546:
1545:
1538:
1529:
1528:
1524:
1515:
1514:
1510:
1501:
1500:
1496:
1487:
1486:
1479:
1470:
1469:
1465:
1455:
1453:
1449:
1448:
1444:
1434:
1432:
1423:
1422:
1418:
1400:
1396:
1395:
1391:
1378:
1377:
1373:
1364:
1363:
1359:
1349:
1347:
1342:
1341:
1337:
1327:
1325:
1321:
1320:
1316:
1307:
1306:
1295:
1286:
1285:
1281:
1272:
1271:
1267:
1257:
1255:
1247:
1246:
1242:
1229:
1228:
1224:
1209:
1208:
1201:
1191:
1189:
1186:"Release 1.5.2"
1184:
1183:
1179:
1175:
1147:
1142:
1140:
1137:
1117:
1101:
1075:freedesktop.org
1062:, Clutter-GTK,
1045:
1039:
1027:
1012:
906:Linux packagers
898:dependency hell
886:
875:
847:
813:
804:Do it yourself
790:Do it yourself
776:Trivial to add
760:Trivial to add
744:Trivial to add
738:
734:
724:
720:
679:
668:
662:
659:
644:
632:
628:
617:
606:
600:
597:
586:
574:
525:
494:
392:Turing-complete
381:
343:Meson supports
279:
226:
222:
206:
198:
144:
126:
109:
104:
102:
99:
73:
71:
68:
64:Initial release
49:
34:
33:Logo since 2019
17:
12:
11:
5:
1725:
1723:
1715:
1714:
1709:
1704:
1699:
1694:
1684:
1683:
1680:
1679:
1663:
1662:External links
1660:
1658:
1657:
1643:
1629:
1615:
1601:
1587:
1567:
1553:
1536:
1522:
1508:
1494:
1477:
1463:
1442:
1431:. 23 June 2016
1416:
1389:
1371:
1366:"Meson Syntax"
1357:
1335:
1314:
1293:
1288:"Compiler IDs"
1279:
1265:
1240:
1222:
1199:
1176:
1174:
1171:
1170:
1169:
1164:
1159:
1153:
1152:
1136:
1133:
1038:
1035:
1026:
1023:
1020:
1019:
1009:
1006:
1003:
999:
998:
995:
992:
989:
985:
984:
981:
975:
972:
968:
967:
962:
959:
956:
952:
951:
948:
945:
939:
935:
934:
931:
928:
925:
919:
918:
916:
902:software bloat
885:
882:
879:
878:
873:
870:
867:
863:
862:
857:
854:
851:
843:
842:
839:
836:
833:
812:
809:
806:
805:
802:
799:
796:
792:
791:
788:
787:Do it yourself
785:
782:
778:
777:
774:
773:Trivial to add
771:
770:Trivial to add
768:
762:
761:
758:
757:Trivial to add
755:
752:
746:
745:
742:
731:
728:
716:
715:
712:Recursive Make
709:
706:
703:
699:
698:
695:
692:
689:
681:
680:
635:
633:
626:
619:
618:
577:
575:
568:
524:
521:
518:
517:
514:
511:
508:
504:
503:
500:
497:
492:
488:
487:
484:
481:
478:
474:
473:
470:
467:
464:
460:
459:
456:
453:
450:
446:
445:
442:
439:
436:
432:
431:
428:
425:
422:
418:
417:
414:
411:
408:
399:strongly typed
380:
377:
278:
275:
214:
213:
196:
192:
191:
186:
180:
179:
174:
168:
167:
165:Cross-platform
162:
156:
155:
150:
146:
145:
143:
142:
123:
121:
115:
114:
111:
110:
91:
89:
87:Stable release
83:
82:
79:
78:
65:
61:
60:
59:Jussi Pakkanen
57:
51:
50:
44:
36:
35:
32:
15:
13:
10:
9:
6:
4:
3:
2:
1724:
1713:
1710:
1708:
1705:
1703:
1700:
1698:
1695:
1693:
1690:
1689:
1687:
1677:
1671:
1666:
1665:
1661:
1653:
1647:
1644:
1639:
1633:
1630:
1625:
1619:
1616:
1611:
1605:
1602:
1597:
1591:
1588:
1583:
1582:
1577:
1571:
1568:
1563:
1557:
1554:
1549:
1543:
1541:
1537:
1532:
1526:
1523:
1518:
1512:
1509:
1504:
1498:
1495:
1490:
1484:
1482:
1478:
1473:
1467:
1464:
1452:
1446:
1443:
1430:
1426:
1420:
1417:
1413:
1408:
1407:
1399:
1393:
1390:
1386:
1381:
1375:
1372:
1367:
1361:
1358:
1346:
1339:
1336:
1324:
1318:
1315:
1310:
1304:
1302:
1300:
1298:
1294:
1289:
1283:
1280:
1275:
1269:
1266:
1254:
1250:
1244:
1241:
1237:
1232:
1226:
1223:
1218:
1217:
1212:
1206:
1204:
1200:
1187:
1181:
1178:
1172:
1168:
1165:
1163:
1160:
1158:
1155:
1154:
1150:
1139:
1134:
1132:
1130:
1126:
1121:
1115:
1111:
1107:
1099:
1095:
1090:
1088:
1084:
1080:
1076:
1071:
1069:
1065:
1061:
1057:
1053:
1049:
1044:
1036:
1034:
1032:
1024:
1017:
1010:
1007:
1004:
1001:
1000:
996:
993:
990:
987:
986:
982:
976:
973:
970:
969:
966:
963:
960:
957:
954:
953:
949:
946:
943:
940:
937:
936:
932:
929:
926:
923:
922:
917:
914:
913:
912:
909:
907:
903:
899:
895:
891:
883:
874:
871:
868:
865:
864:
858:
855:
852:
845:
844:
840:
837:
834:
832:
831:
828:
826:
822:
821:test coverage
819:, build with
818:
810:
803:
800:
797:
794:
793:
789:
786:
783:
780:
779:
775:
772:
769:
767:
764:
763:
759:
756:
753:
751:
748:
747:
743:
732:
729:
718:
717:
713:
710:
707:
704:
701:
700:
696:
693:
690:
688:speed feature
687:
686:
677:
674:
666:
656:
652:
648:
642:
641:
636:This section
634:
625:
624:
615:
612:
604:
594:
590:
584:
583:
578:This section
576:
572:
567:
566:
563:
561:
557:
553:
549:
548:symbol tables
545:
540:
537:
532:
528:
522:
515:
512:
509:
506:
505:
501:
498:
493:
490:
489:
485:
482:
479:
476:
475:
471:
468:
465:
463:File globbing
462:
461:
457:
454:
451:
448:
447:
443:
440:
437:
435:List datatype
434:
433:
429:
426:
423:
420:
419:
415:
412:
409:
406:
405:
402:
400:
395:
393:
388:
386:
378:
376:
374:
370:
366:
362:
358:
354:
350:
346:
341:
339:
335:
331:
327:
323:
319:
315:
311:
307:
303:
299:
294:
292:
289:, as well as
288:
284:
276:
274:
272:
268:
264:
260:
256:
250:
220:
210:
203:
197:
193:
190:
187:
185:
181:
178:
175:
173:
169:
166:
163:
161:
157:
154:
151:
147:
140:
135:
125:
124:
122:
120:
116:
112:
96:
90:
88:
84:
80:
66:
62:
58:
56:
52:
48:
42:
37:
30:
25:
19:
1646:
1632:
1618:
1604:
1590:
1579:
1570:
1556:
1525:
1511:
1497:
1466:
1454:. Retrieved
1445:
1433:. Retrieved
1428:
1419:
1410:
1404:
1392:
1383:
1374:
1360:
1348:. Retrieved
1338:
1326:. Retrieved
1323:"muon.build"
1317:
1282:
1268:
1256:. Retrieved
1252:
1243:
1234:
1225:
1214:
1192:22 September
1190:. Retrieved
1180:
1122:
1118:meson-python
1113:
1091:
1072:
1046:
1030:
1028:
979:FetchContent
961:FetchContent
910:
893:
887:
817:unity builds
814:
801:CMake โฅ 3.16
711:
669:
660:
637:
607:
598:
587:Please help
582:verification
579:
541:
533:
529:
526:
452:since 0.47.0
396:
389:
382:
342:
337:
295:
280:
269:, under the
218:
217:
55:Developer(s)
18:
1435:3 September
1385:regenerate.
1052:GNOME Shell
1041:Main page:
884:Subprojects
846:Generate a
723:depends on
542:Meson uses
495:run_command
314:Objective-C
265:written in
132:/mesonbuild
92:1.5.2
1686:Categories
1328:27 January
1173:References
1129:PostgreSQL
1116:, via the
1102:setuptools
1031:cross file
958:subproject
942:pkg-config
894:subproject
890:pkg-config
841:Autotools
663:March 2024
647:improve it
601:March 2024
375:backends.
357:Emscripten
200:mesonbuild
149:Written in
119:Repository
74:2013-03-02
1406:Microsoft
1120:package.
1068:GStreamer
1056:Autotools
869:Automatic
860:make dist
848:configure
754:Automatic
651:verifying
558:changes.
421:Datatypes
1456:13 March
1258:13 April
1135:See also
1037:Adopters
924:use case
811:Features
798:Optional
733:No, and
536:globbing
379:Language
1216:YouTube
1094:Fortran
1079:Systemd
645:Please
407:Feature
322:Fortran
195:Website
184:License
103: (
72: (
1581:GitHub
1412:other.
1350:28 May
1253:GitHub
1114:wheels
1110:PEP517
1098:Cython
1014:crates
933:Cargo
850:script
766:Distcc
750:Ccache
544:ccache
385:Python
361:Cython
332:, and
267:Python
205:
153:Python
134:/meson
128:github
1401:(PDF)
1236:like.
1157:Cmake
1106:SciPy
1083:X.Org
1073:Many
1048:GNOME
930:CMake
927:Meson
838:CMake
835:Meson
697:Make
694:CMake
691:Meson
416:Make
413:CMake
410:Meson
373:Xcode
365:ninja
349:Clang
287:macOS
219:Meson
47:dav1d
22:Meson
1458:2018
1437:2020
1352:2021
1330:2023
1260:2016
1194:2024
1162:make
1127:and
1125:QEMU
1096:and
1087:Mesa
1085:and
1066:and
1064:GLib
1060:GTK+
739:test
721:test
516:Yes
502:Yes
359:and
338:Wrap
334:Vala
330:Rust
326:Java
310:CUDA
283:Unix
202:.com
172:Type
130:.com
1016:.io
997:No
991:Yes
784:Yes
730:Yes
725:all
649:by
591:by
556:ABI
550:of
513:Yes
510:Yes
499:Yes
486:No
483:Yes
469:Yes
458:No
438:Yes
430:No
424:Yes
371:or
302:C++
1688::
1578:.
1539:^
1480:^
1427:.
1409:.
1403:.
1382:.
1296:^
1251:.
1233:.
1213:.
1202:^
1008:No
994:No
983:?
950:?
856:No
853:No
823:,
480:No
466:No
455:No
427:No
351:,
347:,
328:,
324:,
320:,
316:,
312:,
308:,
306:C#
304:,
300:,
273:.
1654:.
1640:.
1626:.
1612:.
1598:.
1584:.
1564:.
1550:.
1533:.
1519:.
1505:.
1491:.
1474:.
1460:.
1439:.
1368:.
1354:.
1332:.
1311:.
1290:.
1276:.
1262:.
1219:.
1196:.
727:)
676:)
670:(
665:)
661:(
643:.
614:)
608:(
603:)
599:(
585:.
318:D
298:C
249:/
246:n
243:ษ
240:s
237:.
234:ษ
231:m
228:ห
225:/
221:(
107:)
76:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.