c - 制作 : How to generate list of all . c 文件,除了一个

标签 c makefile glob

我有一个包含两个真实目标的 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/

相关文章:

c - 带有指针的预期标识符

QtMqtt 模块 "PCH files error"。在 Centos 上安装 QtMqtt 模块时出现问题

c - 如何在 Makefile 中添加额外的源文件

linux - zsh/bash 上不区分大小写的 Glob

c - scanf() 将换行符保留在缓冲区中

c - 如何实现 timespec 累加器?

c - 哈希读/写中的 hsearch_r 内存泄漏

c - Windows 生成文件 : generate debug information

python - 如何从同一文件夹加载多个图像?

python - 如何从Python中的特定路径调用文件的基本名称?