未触发隐含目标

时间:2014-07-04 14:21:56

标签: makefile

我的Makefile在没有任何参数的情况下调用static目标,但随后因为没有构建依赖项而失败。我已将依赖关系设置为隐式规则,如果我手动调用它们,make表示没有任何事情要做(即使有)......我显然做错了什么,但我不能看看:

CC=gcc
CFLAGS=-Wall -fpic -O3

all: static shared doc

clean:
    rm -rf *.o


objects=dynamicArray.o directedGraph.o linkedList.o stack.o

dynamicArray.o: indexed/dynamicArray.c indexed/dynamicArray.h
directedGraph.o: graph/directedGraph.c graph/directedGraph.h indexed/dynamicArray.h
linkedList.o: graph/linkedList.c graph/directedGraph.h graph/linkedList.h 
stack.o: graph/stack.c graph/linkedList.h graph/stack.h 


# Static library
static: $(objects)
    $(AR) rcs libCS101.a $(objects)

# Shared library
shared: $(objects)
    $(CC) -shared -o libCS101.so $(objects)

# Documentation
doc: Doxyfile $(find . -name "*.dox" -or -name "*.h")
    doxygen

doc目标也不起作用。它不会记录find应列出的文件中的更改,这使我相信这样的转义不正确...)

1 个答案:

答案 0 :(得分:1)

您对各种目标文件的依赖关系不是Make的内置编译规则识别的形式。它希望直接映射%.o: %.c

indexedgraph目录添加VPATH,然后从.c文件名中删除这些路径组件。