从makefile中动态生成文件/对象列表
我正在尝试这样做: 从目录中,选择所有从makefile中动态生成文件/对象列表,makefile,gnu-make,Makefile,Gnu Make,我正在尝试这样做: 从目录中,选择所有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_fi
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)
定义测试\u tgt=
DIR=full/path/to/DIR
文件=$(通配符$(DIR)/*.c)
OBJS=
恩德夫
获取新文件:
$(评估$(测试)
最终目标:获取新文件
$(CC)$(OBJS)
不知何故,这似乎不起作用。我看到很多类似的例子,但不确定是什么
这是错误的。如果这种方法不正确,有人能提出更好的解决方法吗
做到这一点
TIA。您正在尝试编写一个检查程序,该检查由
make
自行执行。
只需将$(OBJS)
列为最终目标的依赖项即可
类似的东西应该在GNU make下工作:
DIR = full/path/to/dir
FILES = $(wildcard $(DIR)/*.c)
OBJS = $(subst .c,.o,$(FILES))
final-target: $(OBJS)
$(LD) -o $@ $+ # or similar
这里有完整的文档:替换引用是您的朋友:
OBJS=$(文件:.c=.o)
@reinierpost,谢谢,我也会尝试一下。我在另一个SO线程上找到了一个解决方案,它使用了,target:>$@
,然后-包括target
?如果目标文件是生成文件,则只能包含目标文件。