好的,所以我已经编译了一个我写到库中的简单记录器,这样我就可以将它包含在其他项目中。但是,当我尝试包含该记录器的标头时,编译失败。
这是我的 Makefile 链接库:
CC= clang++
PROG= ./bin/tetris
OBJS= ./src/main.o ./src/Tetris.o ./src/states/BaseState.o ./src/states/MenuState.o \
./src/states/GameState.o
LIBS= allegro-5.0 allegro_dialog-5.0 allegro_font-5.0 allegro_ttf-5.0 allegro_color-5.0
CXXFLAGS= -g -Wall -std=c++11
LDFLAGS= $(shell pkg-config --static --libs ${LIBS}) -I./src/util -L./src/util/ -lsimplog
all: $(PROG)
$(PROG): $(OBJS)
mkdir -p ./bin/
$(CC) -o $(PROG) $(CXXFLAGS) $(OBJS) $(LDFLAGS)
rm -f $(OBJS)
clean:
rm -f $(PROG) $(TEST_PROG) $(OBJS)
该库位于libsimplog.a
并且位于src
该项目的目录中。我在一个单独的项目文件夹中编译它,然后复制到这里。simplog.h/simplog.c 仅存在于我最初编译此库的项目文件夹中。据我了解,-L ./src/ -lsimplog
在我的编译标志中应该链接这个库。但是,我#include "simplog.h"
的编译仍然失败:
fatal error: simplog.h: No such file or directory
我在它自己的项目文件夹中编译库,与这个项目分开。simplog.h/simplog.c 存在于该项目中,而不是这个。编译这个库的另一个项目的makefile如下:
CC = clang
CFLAGS = -Wall -c
LIB = libsimplog.a
SOURCE = simplog.c
OBJ = simplog.o
all:
$(CC) $(CFLAGS) $(SOURCE)
ar -cvq $(LIB) $(OBJ)
clean:
rm -f $(LIB)