我正在尝试这样做:
从目录中选择所有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)
Run Code Online (Sandbox Code Playgroud)
不知何故,这似乎不起作用。我看到很多类似的例子,但不确定这里有什么问题。如果这种方法不正确,任何人都可以提出更好的方法来实现这一点。
TIA。
您正在尝试编写自动执行的检查程序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
Run Code Online (Sandbox Code Playgroud)
完整文档在这里:https : //www.gnu.org/software/make/manual/html_node/Text-Functions.html