编译无法找到头文件

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
...全文
785 5 打赏 收藏 转发到动态 举报
写回复
用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

23,107

社区成员

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

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