我正在手动编写一个 Makefile 以使用 SWIG 创建一个 PHP 扩展库。我有以下目录结构:
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 文件的大纲来构建共享库 - 即我希望构建的对象和二进制文件去哪里。