【问题标题】:multiple makefiles same variable names多个makefile相同的变量名
【发布时间】:2013-09-06 02:06:09
【问题描述】:

我正在尝试编写一个非递归的 make 构建系统。
我试图完成的是每个makefile都将定义自己的变量,并且“感觉”就像他是系统中唯一的一个。
例如:
项目布局:
-Makefile
-src1
----Makefile
----example1.c
-src2
----Makfile
----example2.c

主 Makefile 如下所示:
包括 src1/Makefile
包含 src2/Makefile
全部:$(TARGETS)

每个 src1/src2 生成文件如下所示:
SRC:=...
OBJ:=...
TARGETS+=bin1 #in src2 它的 bin2
bin1: $(OBJ)
----gcc ....
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
----gcc ....

但是这种设计模式不起作用,因为目标中配方的评估被推迟了。
这意味着 src1 中所有同名的变量都获得了 src2 变量的值(最后一个赋值)。我试图用 $(eval include ...) 替换包含但没有运气。
请注意,所有变量分配都是通过 :=
完成的 有没有办法让每个 makefile 都可以定义他想要的或者每个变量都应该是唯一的?

谢谢, 总

【问题讨论】:

  • 目标文件应该放在哪里?我的意思是,有obj1/ 吗?或者src1/obj/?还是只是'obj/'?
  • 想一想,可执行文件应该放在哪里?如果您在 src1 中运行 Make,它应该构建 src1/bin1。但是如果你在主目录中运行Make,它应该构建bin1bin2,还是src1/bin1src2/bin2

标签: makefile


【解决方案1】:

很难做到这一点。当我在一两个地方完成此操作时,我开始在每个目录中都使用 make sn-ps,这些目录可以包含在主 make 文件中,最后使用脚本方法扫描 make sn-ps 并生成一些东西别的。我也有一个 VPATH。

在“递归使被认为有害”的论文中有一个如何实现这一点的示例,这可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多