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

问题描述 投票:0回答:1

我在文件夹“/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} 
c++ linux gcc compilation g++
1个回答
0
投票

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

例如

#include <stdlib.h>
#include "stdlib.h"
有两个不同的意思

第一个将搜索您的系统包含目录,第二个将搜索相对于您的源文件目录的目录。

© www.soinside.com 2019 - 2024. All rights reserved.