SWIG を使用して PHP 拡張ライブラリを作成するために Makefile を手動で作成しています。次のディレクトリ構造があります。
wrappers/ # SWIG generated C++ wrappers and header
objects/ # I want to place my object files here
bin/ # I want to place my executable (shared lib) here
これは私のMakefileがどのように見えるかです:
CC=g++
CFLAGS=-fPIC -c -Wall
INCLUDES=`php-config --includes` -Iwrappers
LDFLAGS=-shared
SOURCES=foo_wrap.cpp \
foobar_wrap.cpp \
foofoobar_wrap.cpp \
foobarbar_wrap.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=php_foobarlib.so
all: wrappers/$(SOURCES) bin/$(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o objects/$(input)
.cpp.o:
$(CC) $(CFLAGS) $< -o objects/$(input)
clean:
rm -rf *o $(EXECUTABLE)
コマンド ラインで make を実行すると、次のエラーが表示されます。
make: *ターゲットをすべてにするルールはありません
foobar_wrap.cpp', needed by
。止まる。
代わりに CMake を使用して共有ライブラリを構築したいと考えています。プロジェクトのディレクトリ構造を考慮して、共有ライブラリをビルドするために作成する必要がある CMakeLists ファイルの概要を投稿してください。