簡體   English   中英

g++ 無法使用 -I 更改包含路徑

[英]g++ cannot change include path with -I

我在 kubuntu 上使用 g++ 7.5.0 / GNU make for C++。我的文件結構:

bin
| .o files

header
|archiver.h

source
|main.cpp
|archiver.cpp

makefile

我希望我的源文件能夠檢測到 header 個文件,而無需執行 #include "../header/archiver.h"。 我試過使用:

g++ -I/header

但這不起作用。 我收到錯誤:

g++: fatal error: no input files. 

請求的makefile

CC = g++
CFLAGS = -c -Wall

objects = bin/main.o bin/archiver.o

all : $(objects)
    $(CC) -o build $(objects)

bin/%.o : source/%.cpp
    $(CC) $(CFLAGS) $?
    mv *.o bin

.PHONY : clean
clean : 
    rm -rf all $(objects)

命令

g++ -I<header-dir>

不會更改g++的任何默認設置,包括后續調用的搜索路徑,正如您所假設的那樣。

您需要為每個單獨的 c++ 調用傳遞該編譯器標志,這些調用由make根據您的makefile中定義的規則發出。
后者是您需要調整的,最好使用預定義的 makefile 變量,如CXXFLAGSCXXINCLUDES (查看 GNU-make 文檔了解詳細信息)。


針對您的具體情況

CFLAGS = -c -Wall -I./header

應該管用。

暫無
暫無

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

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