我想编译许多源文件并从中构建一个库。
我的makefile看起来大概是这样的:
SOURCES := /home/test/src/\*.c
OBJECTS := $(SOURCES:.c=.o)
.PHONY: compileLibrary
compileLibrary:
$(CC) -fPIC -c $(SOURCES) -o $(OBJECTS)
$(CC) -shared -o libshared.so $(OBJECTS)
如果进程不迭代每个源文件,似乎makefile不会用SOURCES
替换其值。
答案 0 :(得分:4)
*.c
本身未展开,您必须使用wildcard
函数(如$(wildcard *.c)
)*.c
,而不是\*.c
。 \
已转义且删除 *
的特殊含义。您应该实际使用make的功能:
libshared.so: $(OBJECTS)
$(CC) -shared -o $@ $<
compileLibrary: libshared.so
(注意:你可能没有编译规则,因为默认情况可能已经足够了)