1

我的项目中有一个库,只有在尚未构建库文件时,我才想强制 gmake 为该库构建目标文件。

目前,遵循依赖关系,始终构建对象。

那么,如果库已经存在,是否可以描述阻止编译的规则?

添加示例:

all: prj.exe
    @echo build all.

prj.exe: main.o libbar.a
    gcc main.o -lbar -L. -o prj.exe

libbar.a: foo.o
    ar rcs libbar.a foo.o

%.o: %.c
    gcc -c $< -o $@
4

1 回答 1

3

最简单的方法是使用递归make。任何没有先决条件的目标当且仅当它存在时才被宣布为最新的。因此,声明一个没有先决条件的库目标。然后要让 make 构建目标文件,您应该使用递归。

所以,像这样:

libfoo.a:
        @ $(MAKE) all_objects
        ...commands to build libfoo.a...

all_objects: $(OBJFILES)
于 2013-09-30T12:15:33.863 回答