Talk:Make
From Wikipedia, the free encyclopedia
what about Make Magazine? Brewthatistrue 23:47, 22 July 2005 (UTC)
Contents |
[edit] Weird sentence
What's going on with "It uses files called "makefiles" to determine the dependency graph for a given output, and the build scripts which need passed to the shell to build them."? mat_x 16:31, 9 September 2005 (UTC)
You're right that it's awkward, but it's actually a fair description of the process. It processes the makefile. It has a series of depedency graphs. For a given target, it looks at all the dependencies, and will run the build scripts for anything which needs built (or re-built) in the process. --Flata 10:32, 15 September 2005 (UTC)
- It's a fair description of what the make program does, but not a fair description of how a person learns to get make to do that. From the human's point of view, he or she edits a Makefile to define which output files depend on (i.e., come from) which source files. The human doesn't have to care about the dependency graph which make generates to guide its own approach to checking the dependencies. The human only has to care about defining the dependencies correctly in the Makefile, using the appropriate syntax. The article should distinguish between the internal operation of make, which is of interest to the few people who maintain the make program itself, vs. how the vast majority of users will approach the use of make. I.e., I suggest putting the internal operation stuff in its own section, so as not to confuse people who only want to use the program. That is, an abstract internal concept like "dependency graph" should not be in the introduction section. The introduction should introduce make: here is what it does from the user's point of view, why you might want to use it, and how you approach using it. Teratornis 18:47, 2 June 2006 (UTC)
[edit] Capitalization
I don't necessarily agree with the "incorrecttitle" in this case. For documenting the command, as typed into the command line, yes it's "make" but the program itself is called Make. I don't have PWB sources on-hand anymore, but in the makefile for V7 Make, it says "# Description file for the Make command". In the fatal() routine, it prints its identifier as "Make". The de Boor make, as it appears in FreeBSD 6, prints "make" in the equivalent Punt() routine, for what it's worth. --Flata 10:39, 15 September 2005 (UTC)
[edit] Layman explanations please!
Could someone familiar with this subject please re-write the article in such a way that regular readers can understand the basic concept of it? I'm fairly computer literate, but understands hardly anything of the article, except that we're talking about very specific types of file conversions (this is not about converting a Word file to a TXT file, right?). You won't even know that the article is about computing until you have read several sentences. Thomas Blomberg 10:18, 26 April 2006 (UTC)
- make can handle any kinds of files — as long as you've got a standalone program capable of doing the conversion e.g. doc2txt.exe if such a thing exists. (In other words, make is not a "GUI runner", although there are probably versions that can do that too.) For example: you save your Word document as a new file (or overwrite an old file); then you run make which notices there's a new Word document and runs the conversion program to create (or update) the TXT version of the file. Ewlyahoocom 11:11, 26 April 2006 (UTC)
-
- What I meant is that the article should be written in a way that makes the content accessible to non-computer people. Any clarifications should be in the article, not on the talk page. And to be quite honest, the answer above didn't make me one bit wiser. Thomas Blomberg 11:21, 1 May 2006 (UTC)
-
-
- Yes, I agree that the article should be edited. And while I appreciate your frankness, I assure you it's unnecessary -- it is the reason why I did not attempt to edit the article. Ewlyahoocom 14:52, 1 May 2006 (UTC)
-
- The introduction needs work if a general audience is to understand it. The first several sentences presume the reader has a computer science background. However, someone who has never used make before may have no idea how the vaguely general concepts alluded to in the jargon terms apply to anything specific, nor why someone would need to "automate the process of converting files from one form to another."
- A typical computer user may be familiar with one-off manual file conversions (such as converting a Word .doc file to .txt or .html), but will have no personal experience with projects consisting of several or many source files which a developer (e.g., a programmer, documenter, system designer) edits manually (often in small steps), and then repeatedly compiles and possibly links into some sort of output file or files (e.g., a program, or a document in various output formats as from DocBook, etc.). In other words, the article makes (no pun intended) no sense to someone unfamiliar with using programming software in an edit-compile-run/examine-debug cycle.
- Many computer users will be familiar with GUIs only, and may have barely or never seen a command line interface. make in its classic form requires the "external programs" to be executable from the command line. A reader who doesn't understand this will be further confused.
- The introduction could introduce dependency more clearly, as it applies to make, and what about the whole point of dependency checking: efficiency. The simplest approach is to re-compile every source file in a project, for example with a batch file, but that might waste time re-compiling files that don't need it. The article linked to makes matters worse by mentioning many aspects of dependency irrelevant to make. The concept to get across is reasonably simple: in most cases, a developer edits a source file of some sort, and then it is newer than one or more output files that depend on it (those output files being left over from a previous run of make). The developer runs make, which examines the output files, determines which are older than any of the source files they depend on, and then calls the appropriate command-line programs to generate new copies of the output files from the source files.
- The introduction assumes the reader understands the concept of a file's modification time. It would be nice to link to an appropriate article explaining the concept, but Wikipedia seems not to have one at the moment. The closest I see is the article on touch.
- The article has too many verbs in the passive voice, creating ambiguity as to the various actors (the developer (a human), the various programs that run and do things). The description in places tends to invert the natural order of concept assimilation. I.e., it reads as now-we-understand-it rather than here-is-how-to-understand-it.
- The introduction would benefit from linking explicitly to more of the topics which give clues as to who uses make, and why they use it. It should mention some essential concepts such as the command line interface, and the repetitive edit-compile-run-debug cycle of software development. The IDE article contrasts itself to make, and the make article could contrast itself conversely. It wouldn't hurt to mention why we use make instead of the simple brute-force re-compile-everything method. I don't see a suitable article which defines the concept of a "project" as we would use the term here. The natural use of make is in the context of some sort of software project: a collection of source files a human edits, and then converts into other kinds of files with utility programs.
- I'll make a note to look at editing the article a bit. But I wanted to mention here what I think the article needs before I go hacking at it. Teratornis 18:35, 2 June 2006 (UTC)
-
- OK, I completely rewrote the lead, and it should be quite a bit clearer now. Redquark 17:12, 16 October 2006 (UTC)
[edit] What about test and install
It would be complete if the article covers "make test" and "make install"
[edit] Tale of design mistake lock in?
My fuzzy recollection is Feldman wrote something describing how he quickly (weeks?) concluded that using significant tabs had been a mistake. But how at that point, he had too many users, order 10?, to change it. Now, order 10_000+ users later... It's a cautionary tale for any protocol designer. And I'd really love to find a reference. 66.30.119.55 19:42, 6 July 2006 (UTC)
- Cross-posted on Talk:Make and Talk:Stuart Feldman.
[edit] Usual Wikipædia quality
“The make identifies and runs the programs which are necessary to convert the files (these programs are called dependencies).” This sentence is complete garbage---it implies that “the make” (“the make utility”, perhaps?) works out that, for example, gcc is needed, and runs it; where gcc itself is dubbed a dependancy. This is clearly false, as i) make must have transformation rules explicitly provided to it (even if they are global), and ii) the dependency is this case is the source file (which is a dependency of the required object file).
- So fix it, the "usual Wikipedia" way :) Stevage 02:26, 14 November 2006 (UTC)
[edit] makepp?
Why is makepp listed as one of three modern noteworthy make variants? It looks like a vanity edit, and a Google Groups search indicates that few people use it. Plus, Debian Linux doesn't carry it. How about mentioning Microsoft's nmake instead? JöG 20:13, 28 September 2006 (UTC)