簡體   English   中英

Makefile沒有使用include / library路徑?

[英]Makefile not using include/library paths?

好吧,經過3個小時的研究,我即將瘋狂,所以我覺得是時候將它傳遞給一些新的眼睛了。

CXXFLAGS        = -g -Wall
OBJS            = main.o
PROG            = test
INCLUDES        = -I /usr/include/mysql -I /usr/local/include
LIBS            = -L /usr/lib/mysql -l libmysqlclient.so.15.0.0 -L /usr/local/lib -l libmysqlpp.so.3.1.0

all:            $(PROG)

${PROG}:        $(OBJS)
            $(CXX) $(INCLUDES) -o $(PROG) $(OBJS) $(LIBS)

clean:;         $(RM) -f $(PROG) core *.o

包含路徑有問題,因為我在/ usr / include / mysql中明顯存在時會遇到mysql_version.h不存在的錯誤。

它說,檢查輸出的第一部分

g++ -g -Wall   -c -o main.o main.cpp

這讓我覺得我在Makefile中格式化了一些錯誤的東西(由於額外的空格和缺少include / library路徑)。 但是,我查看了很多關於Makefile和g ++選項的手冊和文章......沒有進展。

我認為這應該是一個簡單的修復。 請幫忙(你感覺到我的絕望嗎?)。

另外,你認為有必要特別指定庫嗎? 我在XCode中運行這些東西很好,但我正在嘗試將代碼遷移到我的Web服務器...... Makefile已停止所有進度,我認為這是我應該學習的東西。

在makefile中,您已將include指令添加到鏈接階段,而不是編譯階段。

線條

${PROG}:        $(OBJS)
            $(CXX) $(INCLUDES) -o $(PROG) $(OBJS) $(LIBS)

假設通過調用$ {CXX}中的編譯器傳遞include文件夾(以及其他參數),從$ {OBJS}中的目標文件中創建$ {PROG}程序。 相反,對於您的變量部分,請執行以下操作:

INCLUDES        = -I /usr/include/mysql -I /usr/local/include
CXXFLAGS        = -g -Wall ${INCLUDES}
OBJS            = main.o
PROG            = test
LIBS            = -L /usr/lib/mysql -l libmysqlclient.so.15.0.0 -L /usr/local/lib -l libmysqlpp.so.3.1.0

這樣,您的CXXFLAGS(用於編譯階段)現在應該拾取您的include指令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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