Почему этот простой make-файл создает только один исходный файл? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть файлы X.c и X.ispc, и я хочу создать общую библиотеку X.so с использованием make-файла.

Тем не менее, простой make-файл ниже дает мне только:

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 $@

1 Ответ

0 голосов
/ 05 сентября 2018

Автоматическая переменная $ <- это имя первой предпосылки. То, что вы хотите, это $ ^. Это расширяется до списка разделенных пробелами имен всех предпосылок. Если ваши информационные страницы установлены </p>

info make 'Automatic Variables'

даст вам полный список переменных, подобных этой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...