18 |
|
|
19 |
* WARNING: Backward-incompatibility! |
* WARNING: Backward-incompatibility! |
20 |
GNU make now implements a generic "second expansion" feature on the |
GNU make now implements a generic "second expansion" feature on the |
21 |
prerequisites of both explicit and implicit (pattern) rules. After |
prerequisites of both explicit and implicit (pattern) rules. In order |
22 |
all rules have been parsed the prerequisites are expanded again, this |
to enable this feature, the special target '.SECONDEXPANSION' must be |
23 |
time with all the automatic variables in scope. This means that in |
defined before the first target which takes advantage of it. If this |
24 |
addition to using standard SysV $$@ in prerequisites lists, you can |
feature is enabled then after all rules have been parsed the |
25 |
also use complex functions such as $$(notdir $$@) etc. This behavior |
prerequisites are expanded again, this time with all the automatic |
26 |
applies to implicit rules, as well, where the second expansion occurs |
variables in scope. This means that in addition to using standard |
27 |
after the rule is matched. However, this means that you need to |
SysV $$@ in prerequisites lists, you can also use complex functions |
28 |
double-quote any "$" in your filenames; instead of "foo: boo$$bar" you |
such as $$(notdir $$@) etc. This behavior applies to implicit rules, |
29 |
now must write "foo: foo$$$$bar". |
as well, where the second expansion occurs when the rule is matched. |
30 |
|
However, this means that you need to double-quote any "$" in your |
31 |
|
filenames; instead of "foo: boo$$bar" you now must write "foo: |
32 |
|
foo$$$$bar". Note that the SysV $$@ etc. feature, which used to be |
33 |
|
available by default, is now ONLY available when the .SECONDEXPANSION |
34 |
|
target is defined. If your makefiles take advantage of this SysV |
35 |
|
feature you will need to update them. |
36 |
|
|
37 |
* WARNING: Backward-incompatibility! |
* WARNING: Backward-incompatibility! |
38 |
In order to comply with POSIX, the way in which GNU make processes |
In order to comply with POSIX, the way in which GNU make processes |