У меня есть make-файл, make-файл должен создавать несколько общих объектных файлов. Эти файлы будут модулями Python. У цели все есть модули как зависимости. Файлы swig wrappers (.cpp) создаются, как и следовало ожидать с помощью программы swig, .cpp компилируются как объектные файлы .o, однако модули не создаются.
Мой make-файл выглядит так:
CXXFLAGS :=$(CXXFLAGS) -fpic $(PYTHON3_CFLAGS)
LDLIBS :=$(LDLIBS) $(PYTHON3_LIBS)
SWIG=swig
SWIG_FLAGS:=-Wall -c++ -python #-DSWIG_TYPE_TABLE=fam #-external-runtime swigpyrun.h
IFACE_FILES += person.i
IFACE_FILES += parent.i
IFACE_FILES += child.i
WRAPPER_FILES = $(IFACE_FILES:.i=_wrap.cpp)
OBJS = $(WRAPPER_FILES:.cpp=.o)
MODULES = $(addprefix _, $(IFACE_FILES:.i=.so))
all:_person.so _child.so _parent.so #$(MODULES)
$(OBJS):$(WRAPPER_FILES)
$(MODULES):$(OBJS)
_%.so:%.cpp
$(CXX) -shared -o $@ $<
%_wrap.cpp:%.i
$(SWIG) $(SWIG_FLAGS) -o $@ $<
clean:
$(RM) $(WRAPPER_FILES)
$(RM) $(OBJS)
$(RM) $(MODULES)
Когда я запускаю его, я получаю:
$ make clean
rm -f person_wrap.cpp parent_wrap.cpp child_wrap.cpp
rm -f person_wrap.o parent_wrap.o child_wrap.o
rm -f _person.so _parent.so _child.so
$ make
swig -Wall -c++ -python -o person_wrap.cpp person.i
swig -Wall -c++ -python -o parent_wrap.cpp parent.i
swig -Wall -c++ -python -o child_wrap.cpp child.i
g++ -fpic `pkg-config --cflags python3` -c -o person_wrap.o person_wrap.cpp
g++ -fpic `pkg-config --cflags python3` -c -o parent_wrap.o parent_wrap.cpp
g++ -fpic `pkg-config --cflags python3` -c -o child_wrap.o child_wrap.cpp
$ make
make: Nothing to be done for 'all'.
Так что я, должно быть, что-то делаю не так, поскольку файлы .so не создаются / не связаны между собой. Но чего мне не хватает?