我試圖讓我的C++項目中的dlib庫工作,不知道如何處理我的Makefile和#include < ...>在我的腳本的頭文件中。我把我的頭文件和我的腳本放在src目錄中。已經對dlib庫進行了符號鏈接,該鏈接位於include目錄中(請參閱下面的文件夾結構)。在C++項目中包含dlib
在DLIB網站,它說:
您應該DLIB文件夾本身不添加到您的編譯器的包括路徑
相反,你應該添加包含DLIB文件夾複製到文件夾中包含搜索路徑然後使用#include形式的include語句。這將確保一切構建正確。
我唯一想要的是將dlib包含在我的頭文件中,並將其編譯爲可以使用dlib的所有函數。你能幫助我嗎?
的文件夾結構是這樣的:
projectDir
|-Makefile
|-src
| |-main.cpp
| |-main.hpp
|-include
|-dlib (symbolic link)
|-all
| |-source.cpp
|- lots of header files
|-...
的生成文件看起來是這樣的:
CC := g++ # This is the main compiler
# CC := clang --analyze # and comment out the linker last line for sanity
SRCDIR := src
LIBDIR := lib
BUILDDIR:= build
TARGET := bin/main
SRCEXT := cpp
SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT))
OBJECTS := $(patsubst$(SRCDIR)/%,$(BUILDDIR) /%,$(SOURCES:.$(SRCEXT)=.o))
CFLAGS := -g # -Wall
LIB := $(shell find $(LIBDIR) -type f -name *.$(SRCEXT))
INC :=
$(TARGET): $(OBJECTS)
@echo " Linking..."
$(CC) $^ -o $(TARGET) $(LIB)
$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)
@mkdir -p $(BUILDDIR)
$(CC) $(CFLAGS) $(INC) -c -o [email protected] $<
clean:
@echo " Cleaning...";
$(RM) -r $(BUILDDIR) $(TARGET)
.PHONY: clean
這是的main.cpp文件:
#include "main.hpp"
int main(){
return 0;
}
而頭文件:main.hpp,因爲我真的不知道該怎麼做。
我已經改變了INC線和評論LIB線。 #LIB \t \t:= $(殼找到$(LIBDIR)型的F -name * $(SRCEXT)。) INC \t \t:= -Iinclude/DLIB/ 此外,我增加了以下我的頭文件: #include <../ include/dlib/geometry.h> 我不知道你在連接階段的問題是什麼意思? (不用說:「沒有這樣的文件或目錄」) – user3346727
檢查我的編輯,並告訴我結果。如果它編譯並且你有鏈接問題,請發佈。 –
是的,非常感謝! Ther只是一個問題,我解決了。問題是包含了dlib文件夾。這是錯誤的(對於dlib至少)並給出錯誤。我現在所做的是: INC:= -Iinclude/dlib 和#include。這現在起作用。非常感謝你! –
user3346727