0

さて、ライブラリに書き込んだ単純なロガーをコンパイルして、他のプロジェクトに含めることができるようにしました。しかし、そのロガーのヘッダーをインクルードしようとすると、コンパイルに失敗します。

ライブラリをリンクする私の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 は、このプロジェクトではなく、そのプロジェクトに存在します。このライブラリをコンパイルする別のプロジェクトのメイクファイルは次のとおりです。

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)
4

2 に答える 2