我有一个包含两个真实目标的 make 项目,一个测试套件和项目的可执行文件。
为了构建这些,我需要类似这样的规则:
testsuite: *.c (except executable.c) *.h
clang ... *.c (except executable.c) -o testsuite
executable: *.c (except testsuite.c) *.h
clang ... *.c (except testsuite.c) -o executable
如果可能的话,正确的语法是什么?
最佳答案
像这样的事情应该做你想做的。
# Explicitly list the sources specific to each target.
EXECUTABLE_SOURCES := executable.c
TESTSUITE_SOURCES := testsuite.c
# Filter out all specific sources from the common wildcard-ed sources.
COMMON_SOURCES := $(filter-out $(TESTSUITE_SOURCES) $(EXECUTABLE_SOURCES),$(wildcard *.c))
testsuite: $(TESTSUITE_SOURCES) $(COMMON_SOURCES)
clang ....
executable: $(EXECUTABLE_SOURCES) $(COMMON_SOURCES)
clang ....
关于c - 制作 : How to generate list of all . c 文件,除了一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033113/