Disable make builtin rules and variables from inside the make file

后端 未结 7 702
隐瞒了意图╮
隐瞒了意图╮ 2020-12-04 17:40

I want to disable builtin rules and variables as per passing the -r and -R options to GNU make, from inside the make file. Other solutions that allow me to do this implicitl

7条回答
  •  独厮守ぢ
    2020-12-04 18:11

    Disabling of built-in rules by writing an empty rule for .SUFFIXES does not work if one then writes another .SUFFIXES rule to add previously known suffixes - the built-in rules are re-enabled. Example: One wants to define rules for .c.i and .i.o, and to disable the built-in rule .c.o. Writing

    .SUFFIXES:
    .SUFFIXES: .o .i .c
    

    does not work - it does not prevent the built-in rule .c.o from being applied.

    The solution is the one employed by Marc Eaddy and documented in the GNU make manual, 10.5.6 Canceling Implicit Rules:

    You can override a built-in implicit rule (or one you have defined yourself) by defining a new pattern rule with the same target and prerequisites, but a different recipe. When the new rule is defined, the built-in one is replaced. The new rule’s position in the sequence of implicit rules is determined by where you write the new rule.

    You can cancel a built-in implicit rule by defining a pattern rule with the same target and prerequisites, but no recipe. For example, the following would cancel the rule that runs the assembler:

        %.o : %.s
    

提交回复
热议问题