c++ 我想包含我指定的文件夹中的头文件,而不是/usr/include

hmmo2u0o  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(205)

我在文件夹'/mnt/droplet/include'中有所需的头文件。我在创建所需的目标文件时使用了-I选项(-I/mnt/droplet/include)。上述文件夹包含头文件“stdlib. h”,但编译器试图包含位于'/usr/include/stdlib. h'的头文件。
如何确保包含目录“/mnt/droplet/include/”中的头文件。
请注意,我希望以相同的方式包含更多这样的头文件,直接在usr/include中替换它们不是一个选项。
相同的make文件如下所示

LIBS :=  -L/mnt/droplet/gcc-7.1/lib64/ -L/mnt/droplet/local/lib/v1.2/  
CXX  := /mnt/droplet/gcc-7.1/bin/g++ -std=c++1z
INCS := -I/mnt/droplet/include -I/mnt/droplet/local/include/v1.2/ 
SRCS := main.cpp 

CXXFLAGS := -Og -g -ggdb3
OUT_EXE :=  binary
SRCS_EXE := ${SRCS} 

OBJS := $(addsuffix .o,$(basename ${SRCS}))
OBJS_EXE := $(addsuffix .o,$(basename ${SRCS_EXE}))

${OUT_EXE}: ${OBJS_EXE}
    g++  -g -o $@ ${OBJS_EXE} ${LIBS} 

%.o : %.cpp
    ${CXX} -v -c ${CXXFLAGS} ${MAIN_DEF} ${INCS} $< -o $@
clean:
    rm -f core ${OBJS_EXE} ${OUT_EXE}
vaqhlq81

vaqhlq811#

检查你的编译器是否可以禁用默认包含的头文件,如果你想改变搜索头文件的位置,那么在你的#include语句中使用双引号。例如;

include<stdlib.h>和#include“stdlib. h”有两种不同的含义。

第一个将搜索您的系统包含目录,第二个将搜索相对于源文件目录的目录。
希望能帮上忙。

相关问题