编译无法找到头文件

OneOnce 2018-02-24 09:07:15
代码目录结构:

Makefile在dll01里面,编译也是来这里编译。
Public.h
#ifndef __PUBLIC_H__
#define __PUBLIC_H__
#define PI 3.1415926
#endif // !__PUBLIC_H__

TestLib.h
测试包含上一层头文件,如包含Public.h:#include <dll01/Public.h>
#ifndef __TESTLIB_H__
#define __TESTLIB_H__
#include <dll01/Public.h>
class TestLib
{
public:
TestLib();
virtual ~TestLib();
public:
int TestSum(int a, int b);
};
#endif // ! __TESTLIB_H__

TestLib.cpp
#include "TestLib.h"
TestLib::TestLib() {
}
TestLib::~TestLib() {
}
int TestLib::TestSum(int a, int b) {
return a + b;
}

Makefile

TARGET := libMyMath.so
TARGET_PATH :=../
CC := g++
LIBS :=
LDFLAGS :=
DEFINES :=
INCLUDES := -I..
CFLAG := -g -Wall -O3 -std=c++11 $(DEFINES) $(INCLUDES)
CXXFLAGS:= $(CFLAGS)
VPATH = . ./subdir
SOURCE := $(wildcard *.cpp) $(wildcard subdir/*.cpp)
SRC_WITHOUTDIR:= $(notdir $(SOURCE))
OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRC_WITHOUTDIR)))

$(TARGET) : $(OBJS)
$(CC) -shared -o $@ $(OBJS) $(LDFLAGS) $(INCLUDES)
%.o : %.cpp
$(CC) $(CXXFLAGS) -fpic -c $< -o $@ $(LDFLAGS) $(LIBS)

.PHONY : clean
clean:
rm -f *.o
rm -f $(TARGET)

通过INCLUDES := -I..让包含目录指向dll01的上一层
编译提示找不到Public.h
错误信息:
g++ -fpic -c ./subdir/TestLib.cpp -o TestLib.o
In file included from ./subdir/TestLib.cpp:1:0:
./subdir/TestLib.h:4:26: fatal error: dll01/Public.h: No such file or directory
compilation terminated.
Makefile:68: recipe for target 'TestLib.o' failed
make: *** [TestLib.o] Error 1
...全文
811 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老衲笑纳了 2018-02-25
  • 打赏
  • 举报
回复
0.0.0.0.0..0.0.0.0.0.0.0.0.
OneOnce 2018-02-24
  • 打赏
  • 举报
回复
没人来领分么
OneOnce 2018-02-24
  • 打赏
  • 举报
回复
CXXFLAGS:= $(CFLAGS)改成 CXXFLAGS:= $(CFLAG)多了一个S
OneOnce 2018-02-24
  • 打赏
  • 举报
回复
CXXFLAGS:= $(CFLAGS)
Greg_han 2018-02-24
  • 打赏
  • 举报
回复
CXXFLAGS:= $(CFLAGS)改成 CXXFLAGS:= $(CFLAG)多了一个S
资源下载链接为: https://pan.quark.cn/s/67c535f75d4c VScode 是一款广受开发者青睐的多功能代码编辑器,对 C++ 语言支持良好,但在编译 C++ 代码过程中,开发者常会遭遇头文件 “not found” 的困扰,本文旨在提供解决此问题的详细方法及相关知识解读。 在 C++ 开发领域,头文件扮演着关键角色,它是存放函数与变量声明的文件,常见后缀为 .h 或 .hpp。头文件是 C++ 编译器顺利编译代码不可或缺的要素。以 iostream 为例,作为 C++ 标准库里的头文件,它承载着输入输出相关函数的声明。 当我们在 VScode 编辑器里编译 C++ 代码时,头文件 “not found” 的报错时有发生。这主要是因为 VScode 未能定位到头文件的存放路径,致使编译流程中断。比如,当代码中出现以下引用: 若这些头文件所在路径未被纳入默认搜索范围(如 /usr/include 或 /usr/local/include),编译时就会弹出 “file not found” 的错误提示。 借助快捷键 shift+command+p 调出命令面板,选择 “C/C++: Edit Configurations” 来编辑 c_cpp_properties.json 文件,在其中的 includePath 字段里添加头文件所在路径。示例配置如下: 同样通过快捷键 shift+command+p,选择 “Tasks: Configure Task” 来编辑 task.json 文件,像这样添加头文件搜索路径参数: 此处通过 “-I” 参数后跟路径 “/Users/ws/project/c/local”,明确指定了头文件搜索位置。 除了上述两种主要方法,还可以考虑启用 clang.diagnostic.enable 选项来屏蔽头文件搜索错误提示;

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧