Knowledge (XXG)

Make (software)

Source 📝

2205: 4021: 1808:
requiring the gcc compiler and GNU Make, here is a generic makefile that compiles all C files in a folder to the corresponding object files and then links them to the final executable. Before compilation takes place, dependencies are gathered in makefile-friendly format into a hidden file ".depend" that is then included to the makefile. Portable programs ought to avoid constructs used below.
4043: 419:) is the standard implementation of Make for Linux and macOS. It provides several extensions over the original Make, such as conditionals. It also provides many built-in functions which can be used to eliminate the need for shell-scripting in the makefile rules as well as to manipulate the variables set and used in the makefile. For example, the 815:
was brand new. I hadn't tried either, so I figured this would be a good excuse to learn. After getting myself snarled up with my first stab at Lex, I just did something simple with the pattern newline-tab. It worked, it stayed. And then a few weeks later I had a user population of about a dozen, most
1803:
That "helloworld.o" depends on "helloworld.c" is now automatically handled by Make. In such a simple example as the one illustrated here this hardly matters, but the real power of suffix rules becomes evident when the number of source files in a software project starts to grow. One only has to write
2169:
Makefile consist of dependencies and a forgotten or an extra one may not be immediately obvious to the user and may result in subtle bugs in the generated software that are hard to catch. Various approaches may be used to avoid this problem and keep dependencies in source and makefiles in sync. One
1807:
Simple suffix rules work well as long as the source files do not depend on each other and on other files such as header files. Another route to simplify the build process is to use so-called pattern matching rules that can be combined with compiler-assisted dependency generation. As a final example
571:
Make skips build actions if the target file timestamp is after that of the source files. Doing so optimizes the build process by skipping actions when the target file is up-to-date, but sometimes updates are skipped erroneously due to file timestamp issues including restoring an older version of a
513:
includes standardization of the basic features and operation of the Make utility, and is implemented with varying degrees of compatibility with Unix-based versions of Make. In general, simple makefiles may be used between various versions of Make with reasonable success. GNU Make, Makepp and some
301:
was therefore unaffected). As I had spent a part of the previous evening coping with the same disaster on a project I was working on, the idea of a tool to solve it came up. It began with an elaborate idea of a dependency analyzer, boiled down to something much simpler, and turned into Make that
1698:
Many systems come with predefined Make rules and macros to specify common tasks such as compilation based on file suffix. This lets users omit the actual (often unportable) instructions of how to generate the target from the source(s). On such a system the makefile above could be modified as
358:
Sun DevPro Make appeared in 1986 with SunOS-3.2. With SunOS-3.2. It was delivered as an optional program; with SunOS-4.0, SunPro Make was made the default Make program. In December 2006, Sun DevPro Make was made open source as part of the efforts to open-source
366:
dmake or Distributed Make that came with Sun Solaris Studio as its default Make, but not the default one on the Solaris Operating System (SunOS). It was originally required to build OpenOffice, but in 2009 the build system was rewritten to use GNU Make. While
1584:
Below is a simple makefile that by default (the "all" rule is listed first) compiles a source file called "helloworld.c" using the system's C compiler and also provides a "clean" target to remove the generated files if the user desires to start over. The
1301:
Suffix rules cannot have any prerequisites of their own. If they have any, they are treated as normal files with unusual names, not as suffix rules. GNU Make supports suffix rules for compatibility with old makefiles but otherwise encourages usage of
725:
indented command lines which define how to generate the target from the components (i.e. source files). If any prerequisite has a more recent timestamp than the target file or the target does not exist as a file, the recipe is performed.
330:
written for each program's codebase. Make's dependency ordering and out-of-date checking makes the build process more robust and more efficient. The makefile allowed for better organization of build logic and often fewer build files.
455:. It supports preprocessor directives such as includes and conditional expressions which use variables set on the command-line or within the makefiles. Inference rules differ from Make; for example they can include search paths. 576:
is a source of files and its clock or time zone is not synchronized with the machine running Make. Also, if a source file's timestamp is in the future, make repeatedly triggers unnecessary actions, causing longer build time.
514:
versions of BSD Make default to looking first for files named "GNUmakefile", "Makeppfile" and "BSDmakefile" respectively, which allows one to put makefiles which use implementation-defined behavior in separate locations.
409:. Distinctively, it has conditionals and iterative loops which are applied at the parsing stage and may be used to conditionally and programmatically construct the makefile, including generation of targets at runtime. 2957:
Mölder, Felix; Jablonski, Kim Philipp; Letcher, Brice; Hall, Michael B.; Tomkins-Tinch, Christopher H.; Sochat, Vanessa; Forster, Jan; Lee, Soohyun; Twardziok, Sven O.; Kanitz, Alexander; Wilm, Andreas (2021-04-19).
434:
Rocky Bernstein's Remake is a fork of GNU Make and provides several extensions over GNU Make, such as better location and error-location reporting, execution tracing, execution profiling, and it contains a
3098:
Adams, P. and Solomon, M., 1993, An overview of the CAPITL software development environment. In International Workshop on Software Configuration Management (pp. 1-34). Berlin, Heidelberg: Springer Berlin
1027:
compiler. If used consistently throughout the makefile, then the compiler used can be changed by changing the value of the macro rather than changing each rule command that invokes the compiler.
580:
When Make starts, it uses the makefile specified on the command-line or if not specified, then uses the one found by via specific search rules. Generally, Make defaults to using the file in the
1804:
a rule for the linking step and declare the object files as prerequisites. Make will then implicitly determine how to make all the object files and look for changes in all the source files.
442:(unrelated to the same-named Microsoft variant) is incompatible with the UNIX variant, but provides features which, according to some, reduce the size of makefiles by a factor of 10. 297:(author of yacc, etc.), storming into my office, cursing the Fates that had caused him to waste a morning debugging a correct program (bug had been fixed, file hadn't been compiled, 2414: 2170:
approach is by using compiler to keep track of dependencies changes .e.g GCC can statically analyze the source code and produce rules for the given file automatically by using
3360: 2622: 550:
for use in a browser. Other examples include: convert a source image file to another format, copy a file to a content management system, and send e-mail about build status.
423:
function can be used to iterate over a list of values, such as the names of files in a given directory. GNU Make is required for building many software systems, including
3045: 481:, starting from version 9. A redesign of the original tool by Bell Labs programmer Andrew G. Hume, it features a different syntax. Mk became the standard build tool in 665:: defines when and how to remake a class of files based on their names; including how a target depends on a file with a name similar to the target and an update recipe 1593:
are two of the so-called internal macros (also known as automatic variables) and stand for the target name and "implicit" source, respectively. In the example below,
2865: 638:
where end conditions are described but the order in which actions are to be taken is not. This type of programming can be confusing to programmers used to
2243: 826:
GNU Make. since version 3.82, allows the choice of any symbol (one character) as the recipe prefix using the .RECIPEPREFIX special variable, for example:
2347:
In the general maintenance of DWB, we have used the Source Code Control System and make utility provided by the PWB/UNIX* interactive operating system.
354:
numerous times, generally using the same makefile format and providing the same features, but some providing enhancements from the original. Examples:
3061: 856:. Since operating systems use different shells this can lead to unportable makefiles. For example, GNU Make (all POSIX Makes) executes commands with 302:
weekend. Use of tools that were still wet was part of the culture. Makefiles were text files, not magically encoded binaries, because that was the
3409: 568:
If no target is specified, Make updates the first target in the makefile which is often a phony target to perform the most commonly used action.
3130: 2372: 779:, Make requires tab. Since this often leads to confusion and mistakes, this aspect of makefile syntax is subject to criticism; described by 240:, even though many competing technologies and tools are available including: similar tools that perform actions based on dependencies, some 2210: 121: 2428: 2500: 1232:
and are used to launch actions based on file extension. In the command lines of suffix rules, POSIX specifies that the internal macro
245: 3111: 2783: 2224: 163: 3357: 3342: 2525: 1317:
can match any substring of zero or more characters, while other characters match only themselves. The prerequisites likewise use
4089: 4084: 4034: 4029: 906:. If file.html is newer than file.txt or file.txt does not exist, then the command is run to generate file.txt from file.html. 3149: 2454: 681: 260: 2685: 3077: 883:
Since a recipe is optional, the dependency line can consist solely of components that refer to other targets, for example:
289:
Feldman describes the inspiration to write Make came from a coworker's frustration with the available tooling of the time:
4079: 776: 2651: 2174:
switch. The other approach would be makefiles or third-party tools that would generate makefiles with dependencies (e.g.
2638:
Makefile inclusion, conditional structures and for loops reminiscent of the C programming language are provided in make.
264: 3402: 3322: 2753: 313: 2737: 2251: 705:
name followed by a colon (:) and optionally a list of targets on which the rule's target depends, its prerequisites.
3308: 3283: 702: 360: 101: 4069: 4006: 3976: 3241: 283: 4074: 3991: 3173: 1024: 785: 527: 458: 85: 41: 3185: 3165: 2388: 790: 635: 619: 522:
In general, based on a makefile, Make updates target files from source files if any source file has a newer
424: 45: 1240:
refers to the target. In this example, which converts any HTML file into text, the shell redirection token
1063:). The latter is safer since omitting the parentheses leads to Make interpreting the next letter after the 4047: 3752: 3421: 3395: 3387: 3058: 2925: 2282: 800: 639: 553:
A makefile defines targets where each is either a file to generate or is a user-defined concept, called a
181: 1354: 1013: 1009: 482: 351: 2718: 3235: 3922: 3870: 1597:
expands to a space delimited list of the prerequisites. There are a number of other internal macros.
1104: 496: 241: 173: 133: 36: 3127: 3017: 2667: 3031: 2287: 573: 188: 526:
than the target file or the target file does not exist. For example, this could include compiling
3595: 3585: 2338: 2300: 729:
The first command may appear on the same line after the prerequisites, separated by a semicolon,
394: 393:), which is derived from Adam de Boor's work on a version of Make capable of building targets in 294: 215: 192: 2558: 2544: 1067:
as the entire variable name. An equivalent form uses curly braces rather than parentheses, i.e.
3258: 2999: 2981: 2408: 2368: 2364: 1381: 1370: 581: 368: 223: 2572: 2321:
Thompson, T. J. (November 1980). "Designer's Workbench: Providing a Production Environment".
1313:
character within the string. The target is considered a pattern for matching file names: the
1048:
A macro value can consist of other macro values. The value of macro is expanded on each use (
816:
of them friends, and I didn't want to screw up my embedded base. The rest, sadly, is history.
3822: 3727: 3722: 2989: 2971: 2432: 2330: 2292: 2218: 2190: 538:, then linking the object files into an executable program. Or this could include compiling 237: 211: 200: 92: 4001: 3850: 3651: 3554: 3364: 3346: 3221: 3153: 3134: 3115: 3108: 3065: 1049: 780: 772: 428: 318: 303: 154: 52: 2787: 2472: 1309:
A pattern rule looks like an ordinary rule, except that its target contains exactly one
954:
Ignoring errors and silencing echo can alternatively be obtained via the special targets
2897: 2851: 2837: 2823: 2809: 2703: 3940: 3875: 3860: 3797: 3757: 3636: 3600: 3494: 3245: 2994: 2959: 2334: 877: 812: 796: 503: 275: 256: 204: 57: 965:
Microsoft's NMAKE has predefined rules that can be omitted from these makefiles, e.g.
4063: 3981: 3842: 3777: 3549: 3524: 3425: 2273:
Feldman, S. I. (April 1979). "Make --- A Program for Maintaining Computer Programs".
950:(+) specifies to execute the command even if Make is invoked in "do not execute" mode 722: 478: 452: 184: 3335: 2342: 2304: 1204:
A common syntax when defining macros, which works on BSD and GNU Make, is to use of
902:
The following example rule is evaluated when Make updates target file.txt; i.e. via
3955: 3855: 3772: 3767: 3671: 3580: 3544: 3499: 3146: 2976: 2893: 2786:. Information and Software Systems Research, AT&T Labs Research. Archived from 931: 327: 2899:
A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986
789:
said "using tabs as part of the syntax is like one of those pungee stick traps in
427:(GCC) (since version 3.4), the Linux kernel, Apache OpenOffice, LibreOffice, and 371:
still contains a mixture of both build systems, the much more actively developed
222:. But, not limited to building, Make can perform any operation available via the 3891: 3865: 3802: 3792: 3782: 3747: 3737: 3732: 3615: 3605: 3559: 3193: 2179: 1358: 535: 372: 219: 108: 2073:# variables used here, the variable $ * that matches whatever % stands for 1324:
The example above of a suffix rule would look like the following pattern rule:
3707: 3666: 3469: 3439: 2200: 873: 853: 547: 539: 492: 464: 461:
make has a command-line option that "Causes MAKE to mimic Microsoft's NMAKE.".
207: 150: 2985: 671:: associates a text value with a name that can be substituted into later text 603:
Make processes the options of the command-line based on the loaded makefile.
3996: 3950: 3930: 3827: 3807: 3762: 3610: 3534: 3519: 3504: 3489: 3484: 3479: 3474: 3085: 1108: 947: 865: 523: 445: 279: 234: 97: 3003: 2296: 656:(dependent targets) and commands that define the update action, called the 17: 927:
A command can have one or more of the following prefixes (after the tab):
282:. An early version was completed in April 1976. Feldman received the 2003 3912: 3692: 3268: 2597: 2175: 1031: 339: 2768: 1411:
The following commands are in the context of the makefile that follows.
994:
A makefile can define and use macros. Macros are usually referred to as
3717: 3641: 3264: 937: 406: 398: 158: 847:"recipe prefix symbol is set to '$ (.RECIPEPREFIX)'" 677:: instruction to do something special such as include another makefile 502:
Snakemake is a Python-driven implementation for compiling and running
3702: 3444: 3379: 402: 2070:# These are the pattern matching rules. In addition to the automatic 3935: 3832: 3812: 3742: 3661: 3564: 3539: 3514: 3464: 3459: 3454: 3449: 2186: 510: 2939: 799:
for an early implementation difficulty preserved by a desire for
771:
Each command line must begin with a tab character. Even though a
259:
with roughly the same functionality – including similar makefile
3986: 3960: 3896: 3817: 3712: 3697: 3656: 3646: 3590: 3418: 861: 808: 783:
as "one of the worst design botches in the history of Unix" and
335: 252: 230: 3391: 2917: 255:
tool, Make is also a technology since multiple tools have been
3787: 3687: 3631: 3529: 2769:"Remake – GNU Make with comprehensible tracing and a debugger" 1282:
When called from the command line, the example above expands.
1072: 1023:
is frequently used in makefiles to refer to the location of a
499:
for faster incremental builds (similar to the cmake metatool).
412: 378: 342:
1.0, which featured a variety of software development tools.
3509: 2501:"Apache OpenOffice Building Guide - Apache OpenOffice Wiki" 721:
A dependency line may be followed by a recipe; a series of
718:
Usually a rule has a single target, rather than multiple.
334:
Make is widely used in part due to its early inclusion in
2879: 2704:"GCC 3.4 Release Series Changes, New Features, and Fixes" 1428:# updates target 'dist' to build for distribution 491:
is Google's replacement of GNU Make, as of 2020 used in
3082:
Apple Developer Documentation: Uniform Type Identifiers
397:, and survives with varying degrees of modification in 1103:
Macros can be composed of shell commands by using the
3216:"Chapter 15. Tools: make: Automating Your Recipes", 868:
are normally used. In contrast to that, Microsoft's
3969: 3921: 3905: 3884: 3841: 3680: 3624: 3573: 3432: 2473:"Development/Gbuild - The Document Foundation Wiki" 2171: 1594: 1590: 1586: 1489:# note: variable LOGNAME comes from the environment 1385: 1321:to show how their names relate to the target name. 1318: 1314: 1310: 1245: 1241: 1237: 1233: 1229: 1228:Suffix rules have "targets" with names in the form 1162: 1158: 1135:The command-line syntax for overriding a macro is: 1112: 1068: 1064: 1020: 999: 966: 959: 955: 903: 686: 652:: defines when and how to update a target; listing 618: 543: 531: 298: 144: 132: 119: 107: 91: 81: 63: 51: 35: 326:Before Make, building on Unix mostly consisted of 2185:Another approach is to use meta-build tools like 934:(-) specifies to ignore an error from the command 588:. GNU Make searches for the first file matching: 2413:: CS1 maint: bot: original URL status unknown ( 2221: – Directed graph representing dependencies 645:Makefiles can contain the following constructs: 3278: 3276: 2395:. Archived from the original on 22 January 2011 1424:# updates target 'help' to list targets 1369:A directive specifies special behavior such as 1008:. Macros in makefiles may be overridden in the 998:when they hold simple string definitions, like 805: 291: 2717:Javier Martinez Canillas (December 26, 2012). 795:". Feldman explains the choice as caused by a 560:Make updates the targets passed as arguments: 306:: printable, debuggable, understandable stuff. 3403: 3156:, Andrew W. Fitzgibbon and William A. Hoffman 2940:"google/kati: An experimental GNU make clone" 8: 3240: – Shell and Utilities Reference, 2539: 2537: 1391:target: component \ component 857: 613: 187:that performs actions ordered by configured 30: 4042: 3410: 3396: 3388: 3137:, from Christopher B Ferris on 2002-08-09 2960:"Sustainable data analysis with Snakemake" 2316: 2314: 1055:A macro is used by expanding either via $ 29: 2993: 2975: 2286: 251:In addition to referring to the original 3059:How to sort Linux ls command file output 2916:Hume, Andrew G.; Flandrena, Bob (2002). 2905:(Technical report). Bell Labs. CSTR 139. 1520:# Display targets by searching this file 1400: 1396: 1392: 944:output the command before it is executed 713: 709: 495:builds. It translates the makefile into 485:, Bell Labs' intended successor to Unix. 2719:"Kbuild: the Linux Kernel Build System" 2235: 1248:is a macro referring to the HTML file: 852:Each command is executed in a separate 3212: 3210: 2406: 2043:"Generating dependencies..." 880:are available but not necessarily cp. 612: 375:only uses the modernized "gbuild" now. 2918:"Maintaining files on Plan 9 with Mk" 1417:# updates first target, 'all' 1236:refers to the first prerequisite and 1184:# echo components YOUNGER than TARGET 872:executes commands with cmd.exe where 7: 2810:"NMAKE Reference Visual Studio 2015" 2668:"8. Functions for Transforming Text" 2495: 2493: 2467: 2465: 2463: 2429:"OpenSolaris at Two (Jim Grisanzio)" 2211:Free and open-source software portal 1244:is part of the command line whereas 2928:from the original on July 11, 2015. 2824:"Makefile Preprocessing Directives" 1517:"Try 'make help'" 229:Make is widely used, especially in 140:BSD make, GNU make, Microsoft nmake 2838:"Makefile Preprocessing Operators" 2653:Unix in a Nutshell, Fourth Edition 2559:"fmake(1) General Commands Manual" 2431:. 12 December 2013. Archived from 2361:Practical Development Environments 2335:10.1002/j.1538-7305.1980.tb03063.x 2250:. 1 September 2013. Archived from 1291:lynx -dump file.html > file.txt 620:Uniform Type Identifier (UTI) 293:Make originated with a visit from 246:integrated development environment 25: 2706:. Free Software Foundation. 2006. 2275:Software: Practice and Experience 2225:List of build automation software 2076:# can be useful in special cases. 4041: 4020: 4019: 3323:"GNU make manual: pattern rules" 2782:Glenn Fowler (January 4, 2012). 2692:, Free Software Foundation, 2013 2674:, Free Software Foundation, 2013 2598:"make(1) - OpenBSD manual pages" 2203: 1511:, nothing to do by default" 1388:character at the end of a line. 1329:# From %.html to %.txt 1153:Makefiles can access predefined 3309:"GNU make manual: suffix rules" 3186:"Prerequisite Types (GNU make)" 923:lynx-dumpfile.html>file.txt 2977:10.12688/f1000research.29032.2 2924:. AT&T Bell Laboratories. 2527:FreeBSD 2.0.5 Make Source Code 1384:is indicated with a backslash 1016:are also available as macros. 27:Software build automation tool 1: 3242:The Single UNIX Specification 2323:Bell System Technical Journal 2244:"V7/usr/src/cmd/make/ident.c" 2182:, can do so automatically). 1395:command ; \ 1071:, which is the style used in 1030:Macros are commonly named in 701:which consists of the rule's 113: 1816:# snippet to fail if not GNU 1012:passed to the Make utility. 3325:. Free Software Foundation. 3311:. Free Software Foundation. 3218:The Art of Unix Programming 3133:September 12, 2016, at the 3064:September 13, 2016, at the 3020:. Free Software Foundation. 2736:Greg Kroah-Hartman (2006), 2477:wiki.documentfoundation.org 1216:instead of the equal sign ( 803:with the very first users: 451:is normally installed with 314:The Art of Unix Programming 69:; 48 years ago 4106: 3166:3.1 What Makefiles Contain 3118:, 2007/02/27, phoenix wiki 2922:Plan 9 Programmer’s Manual 2739:Linux Kernel in a Nutshell 2686:"8.5 The foreach Function" 199:. It is commonly used for 4015: 3128:Re: Choreography and REST 3114:October 23, 2007, at the 807:Why the tab in column 1? 471:tool is a clone of nmake. 284:ACM Software System Award 244:and interactively via an 149: 139: 127: 3174:Free Software Foundation 3152:January 7, 2010, at the 1810: 1701: 1599: 1432: 1413: 1399:command | \ 1326: 1284: 1250: 1167: 1137: 1117: 1077: 1036: 908: 885: 828: 786:The Unix-Haters Handbook 751: 731: 697:Each rule begins with a 562: 3363:April 25, 2016, at the 3147:Target Junior Makefiles 2852:"Search Paths in Rules" 2650:Arnold Robbins (2005), 1764:helloworldhelloworld.o 1694:helloworldhelloworld.o 1019:For example, the macro 636:declarative programming 572:source file, or when a 425:GNU Compiler Collection 82:Implementation language 4090:Unix SUS2008 utilities 4085:Unix programming tools 4035:Unix SUS2008 utilities 4030:Standard Unix programs 3422:command-line interface 3340:in the SunPro man page 3338:Pattern Matching Rules 2297:10.1002/spe.4380090402 1530:"^# target:" 1010:command-line arguments 824: 801:backward compatibility 640:imperative programming 634:language is partially 324: 278:created Make while at 224:operating system shell 182:command-line interface 3345:May 29, 2014, at the 2868:. CodeGear(TM). 2008. 2455:The OpenSolaris Story 2359:Matthew Doar (2005). 1813:# Generic GNUMakefile 1452:"+%Y.%m%d%" 1357:are started with the 1107:operator, denoted by 1014:Environment variables 685:: line starting with 286:for authoring Make. 4080:GNU Project software 3923:Software development 2790:on September 2, 2015 2754:"Build Instructions" 1267:# From .html to .txt 1105:command substitution 174:software development 3358:Automatic Variables 3109:an overview on dsls 2946:. 30 November 2020. 2882:. Qt Project. 2021. 2577:NetBSD Manual Pages 2505:wiki.openoffice.org 2435:on 12 December 2013 2254:on 1 September 2013 2165:Dependency tracking 1341:lynx-dump$ <> 1275:lynx-dump$ <> 669:Variable definition 615: 64:First appeared 32: 2854:. Microsoft. 2014. 2840:. Microsoft. 2014. 2812:. Microsoft. 2015. 1373:another makefile. 1193:# echo TARGET name 860:by default, where 624:public.make-source 574:network filesystem 193:configuration file 4057: 4056: 3380:GNU Make homepage 3288:www.opengroup.org 3267:General Commands 3244:, Version 4 from 2767:Rocky Bernstein. 2374:978-0-596-00796-6 2178:toolchain by the 1382:Line continuation 1377:Line continuation 1147:"value" 940:(@) specifies to 628: 627: 582:working directory 477:replaced Make in 369:Apache OpenOffice 238:operating systems 170: 169: 16:(Redirected from 4097: 4070:Build automation 4045: 4044: 4023: 4022: 3625:User environment 3412: 3405: 3398: 3389: 3368: 3355: 3349: 3333: 3327: 3326: 3319: 3313: 3312: 3305: 3299: 3298: 3296: 3294: 3280: 3271: 3262: 3261: 3254: 3248: 3239: 3238: 3231: 3225: 3214: 3205: 3204: 3202: 3200: 3182: 3176: 3163: 3157: 3144: 3138: 3125: 3119: 3106: 3100: 3096: 3090: 3089: 3074: 3068: 3056: 3050: 3049: 3042: 3036: 3035: 3028: 3022: 3021: 3014: 3008: 3007: 2997: 2979: 2954: 2948: 2947: 2936: 2930: 2929: 2913: 2907: 2906: 2904: 2890: 2884: 2883: 2876: 2870: 2869: 2862: 2856: 2855: 2848: 2842: 2841: 2834: 2828: 2827: 2820: 2814: 2813: 2806: 2800: 2799: 2797: 2795: 2784:"nmake Overview" 2779: 2773: 2772: 2764: 2758: 2757: 2750: 2744: 2743: 2733: 2727: 2726: 2714: 2708: 2707: 2700: 2694: 2693: 2682: 2676: 2675: 2664: 2658: 2657: 2647: 2641: 2640: 2635: 2633: 2619: 2613: 2612: 2610: 2608: 2594: 2588: 2587: 2585: 2583: 2569: 2563: 2562: 2555: 2549: 2548: 2541: 2532: 2531: 2522: 2516: 2515: 2513: 2511: 2497: 2488: 2487: 2485: 2483: 2469: 2458: 2453:Grisanzio, Jim. 2451: 2445: 2444: 2442: 2440: 2425: 2419: 2418: 2412: 2404: 2402: 2400: 2385: 2379: 2378: 2356: 2350: 2349: 2329:(9): 1811–1825. 2318: 2309: 2308: 2290: 2270: 2264: 2263: 2261: 2259: 2240: 2219:Dependency graph 2213: 2208: 2207: 2206: 2173: 2160: 2157: 2154: 2151: 2148: 2144: 2140: 2137: 2133: 2129: 2125: 2122: 2118: 2115: 2111: 2108: 2105: 2101: 2097: 2094: 2090: 2087: 2083: 2080: 2077: 2074: 2071: 2068: 2067:-include .depend 2064: 2060: 2056: 2052: 2048: 2044: 2040: 2037: 2033: 2029: 2026: 2022: 2019: 2016: 2013: 2010: 2006: 2002: 1998: 1995: 1992: 1989: 1985: 1982: 1979: 1975: 1972: 1968: 1964: 1960: 1957: 1953: 1950: 1946: 1943: 1939: 1936: 1933: 1930: 1927: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1901: 1898: 1895: 1892: 1888: 1885: 1881: 1878: 1875: 1871: 1868:patsubst%.c,%.o, 1867: 1864: 1861: 1858: 1854: 1851: 1848: 1844: 1841: 1838: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1798: 1794: 1791: 1787: 1783: 1780: 1776: 1773: 1770: 1767: 1763: 1759: 1756: 1753: 1749: 1745: 1741: 1738: 1734: 1731: 1727: 1724: 1720: 1717: 1714: 1711: 1708: 1705: 1693: 1689: 1686: 1683: 1679: 1675: 1671: 1668: 1664: 1661: 1657: 1654: 1651: 1647: 1643: 1639: 1636: 1632: 1629: 1625: 1622: 1619: 1616: 1613: 1610: 1606: 1603: 1596: 1592: 1588: 1579: 1575: 1571: 1567: 1563: 1560: 1557: 1553: 1549: 1545: 1541: 1538: 1535: 1534:# Make a release 1531: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1505: 1502: 1499: 1496: 1493: 1490: 1487: 1486:# Default target 1484: 1480: 1476: 1472: 1469: 1466: 1462: 1459: 1456: 1453: 1449: 1446: 1443: 1439: 1436: 1429: 1425: 1422: 1418: 1387: 1344: 1340: 1336: 1333: 1330: 1320: 1316: 1312: 1292: 1288: 1278: 1274: 1271: 1268: 1265: 1261: 1257: 1254: 1247: 1243: 1239: 1235: 1231: 1219: 1215: 1211: 1207: 1200: 1197: 1194: 1191: 1188: 1185: 1181: 1177: 1174: 1171: 1164: 1160: 1148: 1145: 1142: 1131: 1127: 1124: 1121: 1114: 1099: 1095: 1091: 1087: 1084: 1081: 1070: 1066: 1043: 1040: 1022: 1007: 1005: 1002: 985: 984: 981: 978: 975: 972: 969: 961: 957: 922: 918: 915: 912: 905: 898: 895: 892: 889: 848: 845: 842: 839: 835: 832: 822: 792:The Green Berets 766: 762: 758: 755: 745: 741: 738: 735: 688: 616: 599: 595: 591: 587: 545: 533: 338:, starting with 322: 311:Stuart Feldman, 300: 201:build automation 191:as defined in a 77: 75: 70: 53:Designed by 33: 21: 4105: 4104: 4100: 4099: 4098: 4096: 4095: 4094: 4075:Compiling tools 4060: 4059: 4058: 4053: 4011: 3965: 3917: 3901: 3880: 3837: 3681:Text processing 3676: 3620: 3569: 3428: 3416: 3385: 3376: 3371: 3365:Wayback Machine 3356: 3352: 3347:Wayback Machine 3334: 3330: 3321: 3320: 3316: 3307: 3306: 3302: 3292: 3290: 3282: 3281: 3274: 3257: 3256: 3255: 3251: 3234: 3233: 3232: 3228: 3222:Eric S. Raymond 3215: 3208: 3198: 3196: 3184: 3183: 3179: 3164: 3160: 3154:Wayback Machine 3145: 3141: 3135:Wayback Machine 3126: 3122: 3116:Wayback Machine 3107: 3103: 3097: 3093: 3076: 3075: 3071: 3066:Wayback Machine 3057: 3053: 3046:"Free BSD make" 3044: 3043: 3039: 3030: 3029: 3025: 3016: 3015: 3011: 2956: 2955: 2951: 2938: 2937: 2933: 2915: 2914: 2910: 2902: 2892: 2891: 2887: 2880:"Jom - Qt Wiki" 2878: 2877: 2873: 2864: 2863: 2859: 2850: 2849: 2845: 2836: 2835: 2831: 2822: 2821: 2817: 2808: 2807: 2803: 2793: 2791: 2781: 2780: 2776: 2766: 2765: 2761: 2752: 2751: 2747: 2735: 2734: 2730: 2716: 2715: 2711: 2702: 2701: 2697: 2684: 2683: 2679: 2666: 2665: 2661: 2649: 2648: 2644: 2631: 2629: 2621: 2620: 2616: 2606: 2604: 2602:man.openbsd.org 2596: 2595: 2591: 2581: 2579: 2571: 2570: 2566: 2557: 2556: 2552: 2543: 2542: 2535: 2524: 2523: 2519: 2509: 2507: 2499: 2498: 2491: 2481: 2479: 2471: 2470: 2461: 2452: 2448: 2438: 2436: 2427: 2426: 2422: 2405: 2398: 2396: 2389:"Google Groups" 2387: 2386: 2382: 2375: 2358: 2357: 2353: 2320: 2319: 2312: 2272: 2271: 2267: 2257: 2255: 2242: 2241: 2237: 2233: 2209: 2204: 2202: 2199: 2167: 2162: 2161: 2158: 2155: 2152: 2149: 2146: 2142: 2138: 2135: 2131: 2127: 2123: 2120: 2116: 2113: 2109: 2106: 2103: 2099: 2095: 2092: 2088: 2085: 2081: 2078: 2075: 2072: 2069: 2066: 2062: 2058: 2054: 2050: 2046: 2042: 2038: 2035: 2031: 2027: 2024: 2020: 2017: 2014: 2011: 2008: 2004: 2000: 1996: 1993: 1990: 1987: 1983: 1980: 1977: 1973: 1970: 1966: 1962: 1958: 1955: 1951: 1948: 1944: 1941: 1937: 1934: 1931: 1928: 1925: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1899: 1896: 1893: 1890: 1889:-Wall-pedantic 1886: 1883: 1879: 1876: 1873: 1869: 1865: 1862: 1859: 1856: 1852: 1849: 1846: 1842: 1839: 1836: 1833: 1830: 1827: 1824: 1821: 1818: 1815: 1812: 1802: 1800: 1799: 1796: 1792: 1789: 1785: 1781: 1778: 1774: 1771: 1768: 1765: 1761: 1757: 1754: 1751: 1747: 1743: 1739: 1736: 1732: 1729: 1725: 1722: 1718: 1715: 1712: 1709: 1706: 1703: 1696: 1695: 1691: 1687: 1684: 1681: 1677: 1673: 1669: 1666: 1662: 1659: 1655: 1652: 1649: 1645: 1641: 1637: 1634: 1630: 1627: 1623: 1620: 1617: 1614: 1611: 1608: 1604: 1601: 1582: 1581: 1577: 1573: 1569: 1565: 1561: 1558: 1555: 1551: 1547: 1543: 1539: 1536: 1533: 1529: 1525: 1522: 1519: 1516: 1513: 1510: 1507: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1478: 1474: 1470: 1467: 1464: 1460: 1457: 1454: 1451: 1447: 1444: 1441: 1437: 1434: 1431: 1430: 1427: 1423: 1420: 1416: 1409: 1404: 1402: 1398: 1394: 1379: 1367: 1351: 1346: 1345: 1342: 1338: 1334: 1331: 1328: 1299: 1294: 1293: 1290: 1289:make-nfile.txt 1286: 1280: 1279: 1276: 1272: 1269: 1266: 1263: 1259: 1255: 1252: 1226: 1217: 1213: 1209: 1205: 1202: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1179: 1175: 1172: 1169: 1155:internal macros 1151: 1150: 1146: 1143: 1140: 1133: 1132: 1129: 1125: 1122: 1119: 1101: 1100: 1097: 1093: 1089: 1085: 1082: 1079: 1046: 1045: 1041: 1038: 1003: 1000: 992: 982: 979: 976: 973: 970: 967: 925: 924: 920: 916: 913: 910: 900: 899: 896: 893: 890: 887: 850: 849: 846: 843: 840: 837: 833: 830: 823: 820: 781:Eric S. Raymond 769: 768: 764: 760: 756: 753: 747: 746: 743: 739: 736: 733: 716: 715: 711: 699:dependency line 695: 609: 597: 593: 589: 585: 566: 565: 520: 438:Glenn Fowler's 429:Mozilla Firefox 348: 323: 319:Eric S. Raymond 310: 273: 208:executable code 128:BSD, GNU, nmake 122:implementations 73: 71: 68: 67:April 1976 28: 23: 22: 15: 12: 11: 5: 4103: 4101: 4093: 4092: 4087: 4082: 4077: 4072: 4062: 4061: 4055: 4054: 4052: 4051: 4039: 4038: 4037: 4032: 4016: 4013: 4012: 4010: 4009: 4007:true and false 4004: 3999: 3994: 3989: 3984: 3979: 3973: 3971: 3967: 3966: 3964: 3963: 3958: 3953: 3948: 3943: 3938: 3933: 3927: 3925: 3919: 3918: 3916: 3915: 3909: 3907: 3903: 3902: 3900: 3899: 3894: 3888: 3886: 3882: 3881: 3879: 3878: 3873: 3868: 3863: 3858: 3853: 3847: 3845: 3843:Shell builtins 3839: 3838: 3836: 3835: 3830: 3825: 3820: 3815: 3810: 3805: 3800: 3795: 3790: 3785: 3780: 3775: 3770: 3765: 3760: 3755: 3750: 3745: 3740: 3735: 3730: 3725: 3720: 3715: 3710: 3705: 3700: 3695: 3690: 3684: 3682: 3678: 3677: 3675: 3674: 3669: 3664: 3659: 3654: 3649: 3644: 3639: 3634: 3628: 3626: 3622: 3621: 3619: 3618: 3613: 3608: 3603: 3598: 3593: 3588: 3583: 3577: 3575: 3571: 3570: 3568: 3567: 3562: 3557: 3552: 3547: 3542: 3537: 3532: 3527: 3522: 3517: 3512: 3507: 3502: 3497: 3492: 3487: 3482: 3477: 3472: 3467: 3462: 3457: 3452: 3447: 3442: 3436: 3434: 3430: 3429: 3426:shell builtins 3417: 3415: 3414: 3407: 3400: 3392: 3383: 3382: 3375: 3374:External links 3372: 3370: 3369: 3350: 3328: 3314: 3300: 3272: 3249: 3246:The Open Group 3226: 3206: 3177: 3158: 3139: 3120: 3101: 3091: 3069: 3051: 3037: 3023: 3009: 2949: 2931: 2908: 2894:McIlroy, M. D. 2885: 2871: 2857: 2843: 2829: 2815: 2801: 2774: 2759: 2745: 2728: 2709: 2695: 2677: 2659: 2642: 2614: 2589: 2564: 2550: 2533: 2517: 2489: 2459: 2446: 2420: 2380: 2373: 2367:. p. 94. 2365:O'Reilly Media 2351: 2310: 2288:10.1.1.39.7058 2281:(4): 255–265. 2265: 2234: 2232: 2229: 2228: 2227: 2222: 2215: 2214: 2198: 2195: 2166: 2163: 1811: 1702: 1600: 1433: 1414: 1408: 1405: 1403:piped-command 1390: 1378: 1375: 1366: 1363: 1350: 1347: 1327: 1298: 1295: 1285: 1251: 1225: 1222: 1168: 1165:being common. 1138: 1118: 1078: 1037: 991: 988: 952: 951: 945: 935: 909: 886: 876:commands like 864:commands like 829: 821:Stuart Feldman 818: 752: 732: 712:. . . 707: 694: 691: 690: 689: 678: 672: 666: 660: 626: 625: 622: 608: 605: 563: 519: 516: 508: 507: 504:bioinformatics 500: 486: 472: 462: 456: 443: 436: 432: 410: 376: 364: 350:Make has been 347: 344: 308: 276:Stuart Feldman 272: 269: 168: 167: 147: 146: 142: 141: 137: 136: 130: 129: 125: 124: 117: 116: 111: 105: 104: 95: 89: 88: 83: 79: 78: 65: 61: 60: 58:Stuart Feldman 55: 49: 48: 39: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 4102: 4091: 4088: 4086: 4083: 4081: 4078: 4076: 4073: 4071: 4068: 4067: 4065: 4050: 4049: 4040: 4036: 4033: 4031: 4028: 4027: 4026: 4018: 4017: 4014: 4008: 4005: 4003: 4000: 3998: 3995: 3993: 3990: 3988: 3985: 3983: 3980: 3978: 3975: 3974: 3972: 3970:Miscellaneous 3968: 3962: 3959: 3957: 3954: 3952: 3949: 3947: 3944: 3942: 3939: 3937: 3934: 3932: 3929: 3928: 3926: 3924: 3920: 3914: 3911: 3910: 3908: 3906:Documentation 3904: 3898: 3895: 3893: 3890: 3889: 3887: 3883: 3877: 3874: 3872: 3869: 3867: 3864: 3862: 3859: 3857: 3854: 3852: 3849: 3848: 3846: 3844: 3840: 3834: 3831: 3829: 3826: 3824: 3821: 3819: 3816: 3814: 3811: 3809: 3806: 3804: 3801: 3799: 3796: 3794: 3791: 3789: 3786: 3784: 3781: 3779: 3776: 3774: 3771: 3769: 3766: 3764: 3761: 3759: 3756: 3754: 3751: 3749: 3746: 3744: 3741: 3739: 3736: 3734: 3731: 3729: 3726: 3724: 3721: 3719: 3716: 3714: 3711: 3709: 3706: 3704: 3701: 3699: 3696: 3694: 3691: 3689: 3686: 3685: 3683: 3679: 3673: 3670: 3668: 3665: 3663: 3660: 3658: 3655: 3653: 3650: 3648: 3645: 3643: 3640: 3638: 3635: 3633: 3630: 3629: 3627: 3623: 3617: 3614: 3612: 3609: 3607: 3604: 3602: 3599: 3597: 3594: 3592: 3589: 3587: 3584: 3582: 3579: 3578: 3576: 3572: 3566: 3563: 3561: 3558: 3556: 3553: 3551: 3548: 3546: 3543: 3541: 3538: 3536: 3533: 3531: 3528: 3526: 3523: 3521: 3518: 3516: 3513: 3511: 3508: 3506: 3503: 3501: 3498: 3496: 3493: 3491: 3488: 3486: 3483: 3481: 3478: 3476: 3473: 3471: 3468: 3466: 3463: 3461: 3458: 3456: 3453: 3451: 3448: 3446: 3443: 3441: 3438: 3437: 3435: 3431: 3427: 3424:programs and 3423: 3420: 3413: 3408: 3406: 3401: 3399: 3394: 3393: 3390: 3386: 3381: 3378: 3377: 3373: 3366: 3362: 3359: 3354: 3351: 3348: 3344: 3341: 3339: 3332: 3329: 3324: 3318: 3315: 3310: 3304: 3301: 3289: 3285: 3279: 3277: 3273: 3270: 3266: 3263: –  3260: 3253: 3250: 3247: 3243: 3237: 3230: 3227: 3223: 3219: 3213: 3211: 3207: 3195: 3191: 3187: 3181: 3178: 3175: 3171: 3167: 3162: 3159: 3155: 3151: 3148: 3143: 3140: 3136: 3132: 3129: 3124: 3121: 3117: 3113: 3110: 3105: 3102: 3095: 3092: 3087: 3083: 3079: 3073: 3070: 3067: 3063: 3060: 3055: 3052: 3047: 3041: 3038: 3033: 3027: 3024: 3019: 3013: 3010: 3005: 3001: 2996: 2991: 2987: 2983: 2978: 2973: 2969: 2965: 2964:F1000Research 2961: 2953: 2950: 2945: 2941: 2935: 2932: 2927: 2923: 2919: 2912: 2909: 2901: 2900: 2895: 2889: 2886: 2881: 2875: 2872: 2867: 2861: 2858: 2853: 2847: 2844: 2839: 2833: 2830: 2825: 2819: 2816: 2811: 2805: 2802: 2789: 2785: 2778: 2775: 2770: 2763: 2760: 2755: 2749: 2746: 2741: 2740: 2732: 2729: 2724: 2723:Linux Journal 2720: 2713: 2710: 2705: 2699: 2696: 2691: 2687: 2681: 2678: 2673: 2669: 2663: 2660: 2655: 2654: 2646: 2643: 2639: 2628: 2624: 2618: 2615: 2603: 2599: 2593: 2590: 2578: 2574: 2568: 2565: 2560: 2554: 2551: 2546: 2540: 2538: 2534: 2529: 2528: 2521: 2518: 2506: 2502: 2496: 2494: 2490: 2478: 2474: 2468: 2466: 2464: 2460: 2456: 2450: 2447: 2434: 2430: 2424: 2421: 2416: 2410: 2394: 2390: 2384: 2381: 2376: 2370: 2366: 2362: 2355: 2352: 2348: 2344: 2340: 2336: 2332: 2328: 2324: 2317: 2315: 2311: 2306: 2302: 2298: 2294: 2289: 2284: 2280: 2276: 2269: 2266: 2253: 2249: 2245: 2239: 2236: 2230: 2226: 2223: 2220: 2217: 2216: 2212: 2201: 2196: 2194: 2192: 2188: 2183: 2181: 2177: 2164: 1809: 1805: 1766:# suffix rule 1700: 1598: 1412: 1406: 1389: 1383: 1376: 1374: 1372: 1364: 1362: 1360: 1356: 1348: 1325: 1322: 1307: 1305: 1304:pattern rules 1297:Pattern rules 1296: 1283: 1249: 1223: 1221: 1166: 1156: 1136: 1116: 1110: 1106: 1076: 1074: 1062: 1058: 1053: 1051: 1035: 1033: 1028: 1026: 1017: 1015: 1011: 997: 989: 987: 963: 949: 946: 943: 939: 936: 933: 930: 929: 928: 907: 904:make file.txt 884: 881: 879: 875: 871: 867: 863: 859: 855: 831:.RECIPEPREFIX 827: 817: 814: 810: 804: 802: 798: 794: 793: 788: 787: 782: 778: 774: 750: 749:for example, 740:prerequisites 730: 727: 724: 719: 706: 704: 700: 692: 684: 683: 679: 676: 673: 670: 667: 664: 663:Implicit rule 661: 659: 655: 654:prerequisites 651: 650:Explicit rule 648: 647: 646: 643: 641: 637: 633: 623: 621: 617: 611: 606: 604: 601: 583: 578: 575: 569: 561: 558: 556: 551: 549: 541: 537: 529: 525: 517: 515: 512: 505: 501: 498: 494: 490: 487: 484: 480: 479:Research Unix 476: 473: 470: 466: 463: 460: 457: 454: 453:Visual Studio 450: 447: 444: 441: 437: 433: 430: 426: 422: 418: 414: 411: 408: 404: 400: 396: 392: 388: 384: 380: 377: 374: 370: 365: 362: 357: 356: 355: 353: 345: 343: 341: 337: 332: 329: 328:shell scripts 320: 316: 315: 307: 305: 296: 295:Steve Johnson 290: 287: 285: 281: 277: 270: 268: 266: 262: 258: 254: 249: 247: 243: 239: 236: 232: 227: 225: 221: 217: 213: 209: 206: 202: 198: 194: 190: 186: 185:software tool 183: 179: 175: 166: 165: 160: 156: 152: 148: 143: 138: 135: 131: 126: 123: 118: 115: 112: 110: 106: 103: 99: 96: 94: 90: 87: 84: 80: 66: 62: 59: 56: 54: 50: 47: 43: 40: 38: 34: 19: 4046: 4024: 3945: 3384: 3353: 3337: 3336:See section 3331: 3317: 3303: 3291:. Retrieved 3287: 3252: 3229: 3217: 3197:. Retrieved 3189: 3180: 3169: 3161: 3142: 3123: 3104: 3094: 3081: 3072: 3054: 3040: 3026: 3018:"GNU 'make'" 3012: 2967: 2963: 2952: 2943: 2934: 2921: 2911: 2898: 2888: 2874: 2860: 2846: 2832: 2818: 2804: 2792:. Retrieved 2788:the original 2777: 2762: 2748: 2738: 2731: 2722: 2712: 2698: 2689: 2680: 2671: 2662: 2652: 2645: 2637: 2630:. Retrieved 2626: 2617: 2605:. Retrieved 2601: 2592: 2580:. Retrieved 2576: 2567: 2553: 2526: 2520: 2508:. Retrieved 2504: 2480:. Retrieved 2476: 2449: 2437:. Retrieved 2433:the original 2423: 2397:. Retrieved 2392: 2383: 2360: 2354: 2346: 2326: 2322: 2278: 2274: 2268: 2256:. Retrieved 2252:the original 2247: 2238: 2184: 2168: 2065:@rm-fdepend 1806: 1801: 1697: 1650:helloworld.o 1583: 1576:RELEASE_FILE 1554:RELEASE_FILE 1501:"Hello 1465:RELEASE_FILE 1410: 1380: 1368: 1353:Single-line 1352: 1323: 1308: 1303: 1300: 1281: 1227: 1224:Suffix rules 1203: 1154: 1152: 1134: 1102: 1060: 1056: 1054: 1047: 1029: 1018: 995: 993: 964: 953: 941: 926: 901: 882: 869: 851: 825: 806: 791: 784: 770: 748: 728: 720: 717: 698: 696: 680: 674: 668: 662: 657: 653: 649: 644: 631: 629: 610: 602: 579: 570: 567: 559: 554: 552: 536:object files 521: 509: 488: 474: 468: 448: 439: 420: 416: 415:Make (short 390: 386: 382: 349: 333: 325: 312: 292: 288: 274: 250: 228: 196: 189:dependencies 177: 171: 162: 109:File formats 3433:File system 3199:15 December 3194:GNU Project 3099:Heidelberg. 2180:GNU Project 2141:rm-f.depend 2049:foreachvar, 1919:$ (PROGRAM) 1855:wildcard*.c 1568:RELEASE_DIR 1546:RELEASE_DIR 1458:RELEASE_DIR 1359:hash symbol 1044:definition 590:GNUmakefile 459:Embarcadero 373:LibreOffice 352:implemented 257:implemented 220:source code 210:(such as a 46:declarative 18:Make (Unix) 4064:Categories 4025:Categories 3367:GNU `make' 3078:"makefile" 2742:, O'Reilly 2656:, O'Reilly 2545:"Bmake(1)" 2393:arquivo.pt 2231:References 2102:-c$ <-o 2030:>> . 1719:helloworld 1713:helloworld 1710:helloworld 1656:helloworld 1624:helloworld 1618:helloworld 1615:helloworld 1559:&& 797:workaround 777:whitespace 708:target : 548:JavaScript 540:TypeScript 506:workflows. 493:Android OS 465:Qt Project 304:Unix ethos 145:Influenced 3885:Searching 3574:Processes 3086:Apple Inc 2986:2046-1402 2283:CiteSeerX 1819:ifneq (,) 1790:.SUFFIXES 1788:-c$ < 1699:follows: 1371:including 1365:Directive 1270:.html.txt 1253:.SUFFIXES 1180:component 1176:component 1109:backticks 1080:NEW_MACRO 996:variables 897:distclean 888:realclean 811:was new, 675:Directive 524:timestamp 446:Microsoft 435:debugger. 280:Bell Labs 265:semantics 242:compilers 235:Unix-like 195:called a 98:Unix-like 3693:basename 3361:Archived 3343:Archived 3293:18 March 3170:GNU make 3150:Archived 3131:Archived 3112:Archived 3062:Archived 3032:"Makepp" 3004:34035898 2926:Archived 2896:(1987). 2690:GNU make 2672:GNU make 2607:18 March 2510:18 March 2482:18 March 2439:18 March 2409:cite web 2399:18 March 2343:27213583 2305:33059412 2258:18 March 2248:tuhs.org 2197:See also 2176:Automake 1828:requires 1825:makefile 1532:akefile 1440:package 1426:makedist 1407:Examples 1355:comments 1230:.FROM.TO 1120:YYYYMMDD 1032:all-caps 911:file.txt 819:—  775:is also 742: ; 632:makefile 614:Makefile 607:Makefile 598:Makefile 594:makefile 586:Makefile 557:target. 395:parallel 346:Variants 340:PWB/UNIX 309:—  197:makefile 134:Dialects 114:Makefile 37:Paradigm 3798:strings 3718:dirname 3642:logname 3591:crontab 3265:FreeBSD 3259:make(1) 3190:GNU.org 2995:8114187 2826:. 2014. 2794:May 26, 2627:FreeBSD 2134:$ < 2053:C_FILES 2036:.depend 1991:.depend 1969:PROGRAM 1961:LDFLAGS 1913:PROGRAM 1891:LDFLAGS 1872:C_FILES 1847:C_FILES 1840:PROGRAM 1742:LDFLAGS 1680:$ < 1640:LDFLAGS 1506:LOGNAME 1481:VERSION 1473:PACKAGE 1442:VERSION 1435:PACKAGE 1349:Comment 1157:, with 1149:TARGET 960:.SILENT 956:.IGNORE 858:/bin/sh 767:" 744:command 734:targets 682:Comment 542:files ( 534:) into 530:files ( 421:foreach 407:OpenBSD 399:FreeBSD 361:Solaris 218:) from 216:library 212:program 159:MSBuild 102:Inferno 74:1976-04 72: ( 3778:printf 3703:csplit 3445:chattr 3284:"make" 3269:Manual 3002:  2992:  2984:  2970:: 33. 2944:GitHub 2866:"MAKE" 2632:9 July 2623:"make" 2582:9 July 2573:"make" 2530:, 1993 2371:  2341:  2303:  2285:  2159:depend 2150:.PHONY 2126:CFLAGS 2098:CFLAGS 2032:depend 2028:depend 2012:depend 1988:depend 1981:depend 1976:LDLIBS 1947:CFLAGS 1926:depend 1897:LDLIBS 1884:CFLAGS 1784:CFLAGS 1735:CFLAGS 1672:CFLAGS 1602:CFLAGS 1591:$ < 1564:gzip-9 1542:tar-cf 1332:%.txt 1246:$ < 1234:$ < 1212:, and 1170:target 1096:MACRO2 1059:or $ ( 1050:lazily 990:Macros 980:CFLAGS 844::@echo 763:" 703:target 658:recipe 584:named 483:Plan 9 403:NetBSD 381:Make ( 299:cc *.o 271:Origin 261:syntax 164:others 161:, and 120:Major 4002:sleep 3956:strip 3936:ctags 3871:unset 3851:alias 3833:xargs 3813:troff 3773:patch 3768:paste 3743:iconv 3672:write 3662:uname 3565:umask 3555:touch 3545:split 3540:rmdir 3515:mkdir 3500:fuser 3465:cksum 3460:chgrp 3455:chown 3450:chmod 2903:(PDF) 2339:S2CID 2301:S2CID 2193:etc. 2191:Meson 2187:CMake 2156:clean 2136:clean 2041:@echo 1837:endif 1834:Make. 1752:clean 1682:clean 1580:.tar 1528:egrep 1401:Tab ↹ 1397:Tab ↹ 1393:Tab ↹ 1361:(#). 1141:MACRO 1088:MACRO 1039:MACRO 1006:clang 968:c.obj 932:minus 894:clean 874:batch 870:nmake 854:shell 773:space 765:hello 754:hello 714:Tab ↹ 710:Tab ↹ 693:Rules 596:, or 564:make 555:phony 546:) to 511:POSIX 497:ninja 449:nmake 440:nmake 417:gmake 391:fmake 387:bmake 383:pmake 205:build 180:is a 42:macro 4048:List 3987:expr 3961:yacc 3946:make 3897:grep 3892:find 3876:wait 3866:test 3861:echo 3818:uniq 3803:tail 3793:sort 3783:read 3758:more 3748:join 3738:head 3733:fold 3713:diff 3698:comm 3657:tput 3652:talk 3647:mesg 3637:exit 3616:time 3606:nice 3601:kill 3560:type 3495:file 3419:Unix 3295:2018 3236:make 3224:2003 3201:2020 3000:PMID 2982:ISSN 2796:2014 2634:2020 2609:2018 2584:2020 2512:2018 2484:2018 2441:2018 2415:link 2401:2018 2369:ISBN 2260:2018 2145:OBJS 1954:OBJS 1932:OBJS 1902:-lm 1860:OBJS 1845:foo 1822:This 1769:.c.o 1750:$ ^ 1676:-c-o 1648:$ ^ 1589:and 1537:dist 1523:help 1514:echo 1498:echo 1450:date 1421:help 1419:make 1415:make 1339:html 1264:html 1242:> 1196:echo 1187:echo 1161:and 1139:make 1128:date 1069:$ {} 1061:NAME 1057:NAME 977:)$ ( 958:and 948:plus 921:html 917:file 878:copy 862:Unix 809:Yacc 761:echo 630:The 544:*.ts 489:Kati 405:and 336:Unix 321:2003 263:and 253:Unix 233:and 231:Unix 178:Make 155:Rake 31:Make 3982:cal 3941:lex 3913:man 3788:sed 3708:cut 3688:awk 3667:who 3632:env 3550:tee 3530:pwd 3525:pax 3470:cmp 3440:cat 2990:PMC 2972:doi 2331:doi 2293:doi 2172:-MM 2143:$ ( 2132:$ @ 2124:$ ( 2117:$ ( 2104:$ @ 2096:$ ( 2089:$ ( 2079:%.o 2061:cmd 2059:$ ( 2051:$ ( 2047:$ ( 2025:cat 2018:var 2015:$ ( 2001:gcc 1997:cmd 1974:$ ( 1967:$ ( 1959:$ ( 1952:$ ( 1945:$ ( 1938:$ ( 1929:$ ( 1910:$ ( 1904:all 1882:cc 1870:$ ( 1866:$ ( 1853:$ ( 1831:GNU 1782:$ ( 1775:$ ( 1758:$ ( 1748:$ @ 1740:$ ( 1733:$ ( 1726:$ ( 1704:all 1688:$ ( 1678:$ @ 1670:$ ( 1663:$ ( 1646:$ @ 1638:$ ( 1631:$ ( 1609:all 1607:-g 1595:$ ^ 1587:$ @ 1574:$ ( 1566:$ ( 1552:$ ( 1544:$ ( 1504:$ ( 1492:all 1479:$ ( 1471:$ ( 1463:.. 1343:$ @ 1287:$ 1277:$ @ 1260:txt 1238:$ @ 1220:). 1199:$ @ 1190:$ ? 1115:). 1094:$ ( 1086:$ ( 1073:BSD 1052:). 971:$ ( 942:not 838:all 813:Lex 759:; @ 723:TAB 532:*.c 518:Use 469:Jom 467:'s 413:GNU 389:or 379:BSD 214:or 203:to 172:In 151:Ant 4066:: 3997:od 3992:lp 3977:bc 3951:nm 3931:ar 3856:cd 3828:wc 3823:vi 3808:tr 3763:nl 3753:m4 3728:ex 3723:ed 3611:ps 3596:fg 3586:bg 3581:at 3535:rm 3520:mv 3510:ls 3505:ln 3490:df 3485:du 3480:dd 3475:cp 3286:. 3275:^ 3220:, 3209:^ 3192:. 3188:. 3172:, 3168:, 3084:. 3080:. 2998:. 2988:. 2980:. 2968:10 2966:. 2962:. 2942:. 2920:. 2721:. 2688:, 2670:, 2636:. 2625:. 2600:. 2575:. 2536:^ 2503:. 2492:^ 2475:. 2462:^ 2411:}} 2407:{{ 2391:. 2363:. 2345:. 2337:. 2327:59 2325:. 2313:^ 2299:. 2291:. 2277:. 2246:. 2189:, 2130:-o 2119:CC 2112:%. 2091:CC 2084:%. 2063:)) 2034:; 2023:; 2009:MF 2005:MM 1999:= 1965:-o 1940:CC 1877:CC 1874:)) 1863::= 1850::= 1777:CC 1760:RM 1746:-o 1728:CC 1690:RM 1665:CC 1644:-o 1633:CC 1605:?= 1337:%. 1306:. 1214:!= 1210:?= 1208:, 1206:+= 1182:2 1178:1 1075:. 1065:$ 1034:: 1021:CC 1001:CC 986:. 974:CC 962:. 938:at 866:cp 836:: 834::= 642:. 600:. 592:, 475:Mk 401:, 385:, 317:, 267:. 248:. 226:. 176:, 157:, 153:, 100:, 93:OS 44:, 3411:e 3404:t 3397:v 3297:. 3203:. 3088:. 3048:. 3034:. 3006:. 2974:: 2798:. 2771:. 2756:. 2725:. 2611:. 2586:. 2561:. 2547:. 2514:. 2486:. 2457:. 2443:. 2417:) 2403:. 2377:. 2333:: 2307:. 2295:: 2279:9 2262:. 2153:: 2147:) 2139:: 2128:) 2121:) 2114:o 2110:: 2107:% 2100:) 2093:) 2086:c 2082:: 2057:, 2055:) 2045:@ 2039:: 2021:) 2007:- 2003:- 1994:: 1986:. 1984:: 1978:) 1971:) 1963:) 1956:) 1949:) 1942:) 1935:) 1924:. 1922:: 1916:) 1907:: 1900:= 1894:= 1887:= 1880:= 1857:) 1843:= 1797:c 1795:. 1793:: 1786:) 1779:) 1772:: 1762:) 1755:: 1744:) 1737:) 1730:) 1723:o 1721:. 1716:: 1707:: 1692:) 1685:: 1674:) 1667:) 1660:c 1658:. 1653:: 1642:) 1635:) 1628:o 1626:. 1621:: 1612:: 1578:) 1572:/ 1570:) 1562:\ 1556:) 1550:/ 1548:) 1540:: 1526:: 1508:) 1495:: 1483:) 1477:- 1475:) 1468:= 1461:= 1455:` 1448:` 1445:= 1438:= 1386:\ 1335:: 1319:% 1315:% 1311:% 1273:: 1262:. 1258:. 1256:: 1218:= 1173:: 1163:@ 1159:? 1144:= 1130:` 1126:` 1123:= 1113:` 1111:( 1098:) 1092:- 1090:) 1083:= 1042:= 1025:C 1004:= 983:) 919:. 914:: 891:: 841:: 757:: 737:: 687:# 528:C 431:. 363:. 86:C 76:) 20:)

Index

Make (Unix)
Paradigm
macro
declarative
Designed by
Stuart Feldman
C
OS
Unix-like
Inferno
File formats
Makefile
implementations
Dialects
Ant
Rake
MSBuild
others
software development
command-line interface
software tool
dependencies
configuration file
build automation
build
executable code
program
library
source code
operating system shell

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.