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
我希望我的源文件能够检测头文件而不必执行#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
.
中定义的规则发出
后者是您需要调整的,最好使用 pre-defined makefile 变量,如 CXXFLAGS
或 CXXINCLUDES
(查看 GNU-make 文档了解详细信息)。
针对您的具体情况
CFLAGS = -c -Wall -I./header
应该可以。
我在 kubuntu 上使用 g++ 7.5.0 / GNU make for C++。我的文件结构:
bin
| .o files
header
|archiver.h
source
|main.cpp
|archiver.cpp
makefile
我希望我的源文件能够检测头文件而不必执行#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
.
中定义的规则发出
后者是您需要调整的,最好使用 pre-defined makefile 变量,如 CXXFLAGS
或 CXXINCLUDES
(查看 GNU-make 文档了解详细信息)。
针对您的具体情况
CFLAGS = -c -Wall -I./header
应该可以。