【问题标题】:Makefile - generic target rule with src- and obj-files in nested directoriesMakefile - 嵌套目录中包含 src 和 obj 文件的通用目标规则
【发布时间】:2017-03-02 12:49:17
【问题描述】:

我的代码在嵌套目录中排序,例如

src/cmn/abc.cpp
src/voc/xyz.cpp

并且期望的对象输出应该是

obj/cmn/abc.o
obj/voc/xyz.o

Makefile 条目是

SRC_FILES := src/cmn/abc.cpp src/voc/xyz.cpp
OBJ_FILES := $(patsubst %.cpp,*.o,$(patsubst src/%,obj%,$SRC_FILES))

通用目标规则很简单(太简单)并且无法按预期工作。它会在 src 文件旁边创建 obj 文件,因为它错过了模式替换。此外,它错过了目录创建(如obj/voc)。

.cpp.o:
        @$(CC) $(CC_FLAGS) $< -o $@

应如何定义目标以实现上述预期目标?

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    由于您已经在使用 GNU make (patsubst),您不妨使用比后缀规则更强大的pattern rules

    obj/%.o : src/%.c
            @mkdir -p $(@D)
            $(CC) $(CC_FLAGS) -c $< -o $@
    

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多