我有文件X.c
和X.ispc
,并且我想使用Makefile构建共享库X.so
。
但是,下面的简单makefile仅给我:
gcc -m32 -c X.c -o X.c.o
ispc -O2 --arch=x86 --target=sse4-i32x4 X.ispc -o X.ispc_o
gcc -m32 -Wl,-hash-style=sysv -fno-stack-protector -fPIC -nostdlib -shared X.c.o -o X.so
在最后一步中没有X.ispc_o。我可以知道我做错了什么吗?
ISPC=ispc
ISPCFLAGS=-O2 --arch=x86 --target=sse4-i32x4
CC = gcc
CFLAGS = -m32 -Wl,-hash-style=sysv -fno-stack-protector -fPIC -nostdlib -shared
default: so
.PHONY: clean
clean:
/bin/rm -rf objs *.o
obj := $(patsubst %.c, %.so, $(wildcard *.c))
so: $(obj)
%.so: %.c.o %.ispc_o
$(CC) $(CFLAGS) $< -o $@
%.ispc_o: %.ispc
$(ISPC) $(ISPCFLAGS) $< -o $@
%.c.o: %.c
$(CC) -m32 -c $< -o $@
答案 0 :(得分:2)
自动变量$ <是第一个必备项的名称。您想要的是$ ^。这将扩展为以空格分隔的所有必备组件名称的列表。如果您的信息页已安装
info make 'Automatic Variables'
将为您提供此类变量的完整列表。