Make Concepts: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
=External=
* https://www.gnu.org/software/make/
=Internal=
=Internal=
* [[Make#Subjects|make]]
* [[Make#Subjects|make]]
Line 20: Line 23:
"$(CURDIR)/scripts/something.sh"
"$(CURDIR)/scripts/something.sh"
</syntaxhighlight>
</syntaxhighlight>
==Automatic Variables==
{{External|https://www.gnu.org/software/make/manual/make.html#Automatic-Variables}}
===<tt>$@</tt>===
The file name of the target of the rule. In a pattern rule that has multiple targets <code>$@</code> is the name of whichever target caused the rule’s recipe to be run.

Revision as of 22:02, 10 January 2024

External

Internal

.PHONY

By default, make targets are assumed to be files on disk. They will be built from other files as result of executing make with that name as argument. However, sometimes you want make to run commands that do not represent physical files in the filesystem, and if there's a file with the same name in the filesystem, make will be confused and will pick up the file. To avoid this, you can disambiguate with .PHONY:

.PHONY: clean
clean: 
  rm -rf *.o


Variables

CURDIR

CURDIR refers to the directory make is run from:

something:
	"$(CURDIR)/scripts/something.sh"

Automatic Variables

https://www.gnu.org/software/make/manual/make.html#Automatic-Variables

$@

The file name of the target of the rule. In a pattern rule that has multiple targets $@ is the name of whichever target caused the rule’s recipe to be run.