簡體   English   中英

如何在makefile中包含和編譯庫

[英]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.hhello.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM