makefile — включает DLIB и другие заголовочные файлы в проект C ++

Я пытаюсь заставить библиотеку dlib работать в моем проекте C ++ за последние 2 недели и нашел какое-то решение, но все еще сталкиваюсь с ошибками, которые не могу понять. Поскольку я новичок в makefile и dlib, укажи мне, что делать с makefile.

Структура папок выглядит следующим образом:

projectDir
|-makefile
|-src
|-CDetector.cpp
|-CDetectot.h
|-CStreamReader.cpp
|-CStreamReader.h
|-include
|-darknet
|-(files).h (other .h files needed by src files)
|-dlib-19.6
|-all
|-source.cpp
|-lots of header files
|-...
|-external_libs
|-libdarknet.a
|-libdarknet.so

Makefile выглядит так:

EXE = darknet

OBJ_DIR = obj

CXXFILES = $(shell find src -type f -name '*.cpp')

CXXOBJ = $(patsubst src/%.cpp,obj/%.o,$(CXXFILES))

INCLUDE = -I/include -I/include/darknet

LIBS = external_libs/libdarknet.a

CXXFLAGS = `pkg-config --cflags-only-I opencv` -Wall -Wno-unknown-pragmas -Wfatal-errors -Wwrite-strings -fPIC

LDFLAGS = -lm -pthread -lX11 -DDLIB_JPEG_SUPPORT -ljpeg

all: $(EXE)

$(EXE): $(CXXOBJ)
$(CXX) $(CXXOBJ) -o $(EXE) $(LIBS) $(LDFLAGS)

$(OBJ_DIR)/%.o: src/%.cpp
$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
$(BUILD)run: all
./$(EXE)

clean:
-rm -f $(EXE) $(CXXOBJ)
rmdir obj/

0

Решение

Это нуждается в некоторой модификации, поскольку INCLUDE, CXXFLAGS И LDFLAGS будут

INCLUDE = -Iinclude -Iinclude/darknet `pkg-config --cflags-only-I opencv`
CXXFLAGS = -Wall -Wno-unknown-pragmas -Wfatal-errors -Wwrite-strings -fPIC
LDFLAGS = -lm -pthread -lX11 -DDLIB_JPEG_SUPPORT -ljpeg -lopencv_videoio `pkg-config --libs opencv`

и теперь я использую даркнет makefile, чтобы сделать это, так что мой makefile выглядит

VPATH = ./src/
ALIB = external_libs/libdarknet.a
EXEC = darknet
OBJDIR = ./obj/

CC = g++ -std=c++11
NVCC = nvcc
AR = ar
ARFLAGS = rcs
OPTS = -Ofast

LDFLAGS = -lm -pthread -lX11 -DDLIB_JPEG_SUPPORT -ljpeg -lopencv_videoio `pkg-config --libs opencv`

INCLUDE = -Iinclude -Iinclude/darknet `pkg-config --cflags-only-I opencv`

CFLAGS = -Wall -Wno-unknown-pragmas -Wfatal-errors -Wwrite-strings -fPIC

OBJ = CDetector.o CStreamReader.o

EXECOBJA = CDetector.o CStreamReader.o

EXECOBJ = $(addprefix $(OBJDIR), $(EXECOBJA))
OBJS = $(addprefix $(OBJDIR), $(OBJ))
DEPS = $(wildcard src/*.h) Makefile include/darknet/darknet.h

all: obj results $(ALIB) $(EXEC)

$(EXEC): $(EXECOBJ) $(ALIB)
$(CC) $(INCLUDE) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(ALIB)

$(ALIB): $(OBJS)
$(AR) $(ARFLAGS) $@ $^

$(OBJDIR)%.o: %.cpp $(DEPS)
$(CC) $(INCLUDE) $(CFLAGS) -c $< -o $@

obj:
mkdir -p obj
backup:
mkdir -p backup
results:
mkdir -p results

.PHONY: clean

clean:
rm -rf $(OBJS) $(ALIB) $(EXEC) $(EXECOBJ)
0

Другие решения

Других решений пока нет …