Makefile宏忽略名为test的所有文件

时间:2017-05-26 15:08:57

标签: makefile macros

我试图为我的这个项目创建一个makefile,但我对这个概念很陌生。我有一个每个项目的makefile,以及我主目录中的一个总体make文件,我可以调用它与所有其他makefile进行通信。

我有几个我命名的文件" test"帮我调试我的项目。默认情况下,我希望将这些测试文件包含在我的构建中,但是使用宏(例如:make TEST_FILES = false),我想省略构建中的文件。

是否有一种方便的方法可以省略所有名为" test"?

的文件

提前谢谢!

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

# Makefile

ifeq ($(TEST_FILES),false)
  SOURCES := $(filter-out test%, $(wildcard *.txt))
else
  SOURCES := $(wildcard *.txt)
endif

all:
    @echo $(SOURCES)

这样做:

$ LC_ALL=C ls -nlah && \
> make all && \
> TEST_FILES=false make all

total 72K
drwx------   2 10335 11111 4.0K May 26 15:36 .
drwxrwxrwt 585     0     0  60K May 26 15:31 ..
-rw-r--r--   1 10335 11111  157 May 26 15:36 Makefile
-rw-r--r--   1 10335 11111    0 May 26 14:57 bar.txt
-rw-r--r--   1 10335 11111    0 May 26 14:57 foo.txt
-rw-r--r--   1 10335 11111    0 May 26 14:57 qux.txt
-rw-r--r--   1 10335 11111    0 May 26 15:30 test_bar.txt
-rw-r--r--   1 10335 11111    0 May 26 15:30 test_foo.txt
-rw-r--r--   1 10335 11111    0 May 26 15:27 test_qux.txt

bar.txt foo.txt qux.txt test_bar.txt test_foo.txt test_qux.txt

bar.txt foo.txt qux.txt

参考文献: