c++ - makefile 未从 -I 包含路径中找到头文件

标签 c++ makefile

我有下面给出的 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,而不是CXXFLAGSCXXFLAGS 变量出现在从 C++ 源构建目标文件的规则中。

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

关于c++ - makefile 未从 -I 包含路径中找到头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934417/

相关文章:

c++ - VS2015 无法理解静态内联函数

c++ - 如何用 common_type 和模板递归类型重载 operator+

linux - 从源代码构建 Octave 包

c - 链接时出现重复符号

makefile - 从 makefile 中的字符串中删除前两个字符?

c++ - 将鼠标悬停在 QListWidget 项上时如何绘制轮廓?

c++ - 由于 Qt 中的 accept socket 函数,窗口没有出现

c++ - 如何创建一个用列表初始化的构造函数?

linux - 如何处理 make 中的特殊情况?

c - 在 MakeFile 中设置选项以将目标文件发送到特定文件夹