[英]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 變量,如CXXFLAGS
或CXXINCLUDES
(查看 GNU-make 文檔了解詳細信息)。
針對您的具體情況
CFLAGS = -c -Wall -I./header
應該管用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.