我有下面给出的 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}
~
最佳答案
您还没有编写从 timing.c 构建 timing.o 的规则,因此 Make 使用默认规则。
但是该规则使用CFLAGS
,而不是CXXFLAGS
。 CXXFLAGS
变量出现在从 C++ 源构建目标文件的规则中。
所以修改 CFLAGS
而不是 CXXFLAGS
,它应该可以工作。
关于c++ - makefile 未从 -I 包含路径中找到头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934417/