make file对我来说是新的。我在同一目录下保存了多个make文件。目录结构就像,
tt\
a\
b\
c\
common\
a.build.mk
b.build.mk
c.build.mk
其中每个文件都有文字,
name := a_tests
lang := python
python_files := $(shell find $(def_path)/tt/ -name "*.py")
source := $(subst $(def_path)/, ,$(python_files))
generation_dep := dep dep1
python_files :=
在其他文件中除了name和generation_dep之外,一切都是相同的。因此,对于b.build.mk,将有name := b_tests
和generation_dep := dep dep2
我面临的问题是收到以下警告, “tools / gmake / python.mk:37:警告:忽略目标'some-file-path'的旧命令”
请让我知道如何摆脱这个警告。
答案 0 :(得分:1)
由于多个.mk文件中的重复部分,警告即将发生。 为了解决这个问题,我将所有mk文件中的重复部分移到了common.build.mk文件中,并且只保留了单个mk文件中的特定部分。
答案 1 :(得分:0)
一个元回答:认为你可能过于复杂了。
通常的模式是每个目录有一个makefile,名为default Makefile
;这是一个良好的模式,只有积极的理由才会偏离。如果你想得到花哨的东西(通常是文档和测试都在不同的目录中),那么你可能会有多个makefile合作,但你可以通过cd subdir; $(MAKE)
这样的规则来实现。使用include
引入其他片段,例如规则或通用定义可能是一种简化,但也可能表明您的代码分布太多(特别是紧密耦合的代码)通常应该在一个目录中。)
这里没有硬性规定,但对我来说,复杂的构建过程就是代码味道。 make
系统实现了一种简单的语言,这是一件好事;像许多简单的语言一样,如果你不努力让事情变得尽可能简单,它会很快变得非常混乱。
(您的问题的直接答案可能是:=
通常用于设置一次且不打算被覆盖的内容,与=
不同。如果您覆盖了这样的设置,那么''会得到这样的警告。)