我正在尝试根据下面给出的文件布局创建一个静态库。
/library
Makefile
/include
.h files
/src
.cpp files
/build
.o files
/lib
.a file
当我使用下面给出的makefile中的当前代码运行make all时,它给出了错误:
make:***没有规则来制作目标src/%.cpp', needed by
build / BaseGfxApp.o'。停止。
CPP_FILES = $(wildcard src/*.cpp)
OBJ_FILES = $(addprefix build/,$(notdir $(CPP_FILES:.cpp=.o)))
CC_FLAGS = -c -Wall
all: libphoto.a
libphoto.a: $(OBJ_FILES)
ar rcs lib/$@ $^
build/%.o: src/%.cpp
g++ $(CC_FLAGS) $@ $<
我很擅长制作&#39;老实说,我不知道从哪里开始。我希望得到一些意见或帮助。谢谢!
答案 0 :(得分:0)
可能是你在src /目录中缺少一个makefile。
答案 1 :(得分:0)
不要在规则中放置路径
%.o: %.cpp
g++ $(CC_FLAGS) $@ $<
答案 2 :(得分:0)
我认为主要的问题是你没有给你正在尝试构建的文件提供正确的路径。但是你也错过了g++
的一些标志。我认为以下更改应该有效(未经过适当测试)。
CPP_FILES = $(wildcard src/*.cpp)
OBJ_FILES = $(patsubst src/%.cpp,build/%.o,$(CPP_FILES))
CXXFLAGS = -Wall
all: prereqs lib/libphoto.a
lib/libphoto.a: $(OBJ_FILES)
ar rcs $@ $^
build/%.o: src/%.cpp
g++ -c $(CXXFLAGS) -o $@ $<
prereqs:
mkdir -p lib
mkdir -p build
.PHONY: prereqs
clean:
rm $(OBJ_FILES) lib/libphoto.a