需要帮助使用make创建静态c ++库

时间:2016-04-26 21:53:49

标签: c++ makefile g++

我正在尝试根据下面给出的文件布局创建一个静态库。

/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;老实说,我不知道从哪里开始。我希望得到一些意见或帮助。谢谢!

3 个答案:

答案 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