Makefile:通过'make all'命令运行bash脚本BEFORE全局变量初始化

时间:2013-08-22 20:17:23

标签: c++ bash makefile

是否可以通过命令'make all'变量初始化之前执行bash脚本。这个想法是这个脚本编译idls并在whitch中创建新的目录.h和.cpp文件等。在执行这个脚本之后,必须初始化makefile中的变量。

BR, d

2 个答案:

答案 0 :(得分:1)

这听起来不是一个好的设计,但这是一种方法:

all:
    bash-script
    $(MAKE) other-things

other-things: some-prereq $(FOO)
    other-stuff $(BAR)

答案 1 :(得分:0)

值得一提的是make支持延迟评估,这意味着它不会扩展变量,直到它们实际用于命令中(或者如果您使用:=而不是=当你指定值时)。这允许您直到最后一刻(当它们在命令行中使用时)修改变量。

引自this Makefile doc

A variable is evaluated when it is part of the right side of the ``:='' or the ``!=''
operator, or directly before executing a shell command which the variable is part of.
In all other cases, make(1) performs lazy evaluation, that is, variables are not
evaluated until there's no other way. The ``modifiers'' mentioned in the man page
also evaluate the variable.