makefile 找不到来自 -I 包含路径的头文件

makefile not finding header file from -I include path

本文关键字:路径 文件 包含 找不到 makefile      更新时间:2023-10-16

我在下面给出了makefile。当我这样做make时,我收到以下错误

cc  -c -o timing.o timing.c
test_c.c:5:17: fatal error: test.h: No such file or directory
#include "test.h"

我已经手动验证了test.h是否存在../include路径。我不确定为什么找不到头文件。如果有人能帮忙,那就太好了。我也希望g++而不是cc

# Makefile template for shared library
CXX = g++ # C++ compiler                                                                                                                                                                     
CXXFLAGS = -fPIC -Wall -Wextra -O2 -g -I../include #CXX flags
LDFLAGS = -lboost_system -shared  # linking flags
RM = rm -f  # rm command
TARGET_LIB = libtest.a # target lib

C_SRCS := test_a.c test_b.c 
CPP_SRCS := test_c.cpp test_d.cpp 
OBJS := $(C_SRCS:.c=.o) $(CPP_SRCS:.cpp=.o)
.PHONY: all 
all: ${TARGET_LIB}
$(TARGET_LIB): $(OBJS) 
$(CXX) $(CXXFLAGS) ${LDFLAGS} -o $@ $^  

.PHONY: clean
clean:
-${RM} ${TARGET_LIB} ${OBJS} 

~

您还没有从 timeing.c 编写用于构建 timeing.o 的规则,因此 Make 使用默认规则。

该规则使用CFLAGS,而不是CXXFLAGSCXXFLAGS变量出现在从C++源构建对象文件的规则中。

所以修改CFLAGS而不是CXXFLAGS,它应该可以工作。