[英]how to include and compile a library in a makefile
我正在嘗試構建這個hello world項目,該項目包括一個同時包含.h
和.cpp
文件的庫(因此該庫也需要進行編譯)。 目錄結構是
helloworld/lib/StanfordCPPLib/console.h
/src/hello.h
/src/hello.cpp
您可以在此處查看項目代碼
當我使用以下makefile運行make
,出現一個錯誤,即hello.cpp
console.h
( hello.cpp
包含在hello.cpp
)
CC=gcc
CFLAGS=-I.
DEPS = hello.h
OBJ = hello.o
#console.h is in lib/StanfordCPPLib and it is included by hello.cpp
INC=-I../lib/StanfordCPPLib
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
hellomake: $(OBJ)
g++ -o $@ $^ $(CFLAGS) $(INC)
如何在此makefile中包含StanfordLibrary,以便同時包含和編譯它。
(請注意,我知道原始源代碼包含一個QT創建者文件,但是,我試圖使用make來構建它)
主要問題是構建objs的規則:
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
在$(INC)中不使用您的包含路徑
另一個問題是您匹配的文件擴展名錯誤。 例如%.c
應該是%.cpp
。
您還在那里有一些多余的垃圾,因此我建議您像這樣更新makefile以獲得想法:
CC=gcc
DEPS = hello.h
OBJ = hello.o
INC=-I. -I../lib/StanfordCPPLib
%.o: %.cpp $(DEPS)
$(CC) $(INC) -c $<
hellomake: $(OBJ)
g++ -o $@ $^
在我的小模擬設置中,此方法構建良好。 請記住,實際上您必須在hellomake:
下使用g ++ hellomake:
才能正確鏈接所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.