编译无法找到头文件

时间:2022-10-25 10:02:17
代码目录结构:
编译无法找到头文件
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

5 个解决方案

#1


CXXFLAGS:= $(CFLAGS)

#2


CXXFLAGS:= $(CFLAGS)改成
CXXFLAGS:= $(CFLAG)多了一个S

#3


没人来领分么

#4


CXXFLAGS:= $(CFLAGS)改成
CXXFLAGS:= $(CFLAG)多了一个S

#5


0.0.0.0.0..0.0.0.0.0.0.0.0. 编译无法找到头文件

#1


CXXFLAGS:= $(CFLAGS)

#2


CXXFLAGS:= $(CFLAGS)改成
CXXFLAGS:= $(CFLAG)多了一个S

#3


没人来领分么

#4


CXXFLAGS:= $(CFLAGS)改成
CXXFLAGS:= $(CFLAG)多了一个S

#5


0.0.0.0.0..0.0.0.0.0.0.0.0. 编译无法找到头文件