我正在尝试这样做:
从目录中选择所有C
(.c
)个文件,生成.o
并将其添加到
我的最终目标执行。 C
文件可以随时添加或删除,所以当我
为我的目标运行make
,必须选择目录中的可用C
文件
编译并链接到我的目标。
到目前为止,我有以下内容:
define test_tgt =
DIR = full/path/to/dir
FILES = $(wildcard $(DIR)/*.c)
OBJS = <rule-to-convert-C-to-O>
endef
get_new_files:
$(eval $(test_tgt))
final-target: get_new_files
$(CC) <other-objs> $(OBJS)
不知何故,这似乎不起作用。我看到很多类似的例子,但不确定是什么 这里错了。如果这种方法不正确,任何人都可以提出更好的方法 做到这一点。
TIA。
答案 0 :(得分:4)
您正在尝试编写make
自己执行的检查。
只需将$(OBJS)
列为final-target
的依赖项。
这样的东西应该在GNU make下工作:
DIR = full/path/to/dir
FILES = $(wildcard $(DIR)/*.c)
OBJS = $(subst .c,.o,$(FILES))
final-target: $(OBJS)
$(LD) -o $@ $+ # or similar
完整文档在此处:https://www.gnu.org/software/make/manual/html_node/Text-Functions.html