makefile没有从-I包含路径查找头文件

时间:2016-06-21 01:58:51

标签: 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} 

1 个答案:

答案 0 :(得分:1)

你还没有编写一个规则来构建来自timing.c的timing.o,所以Make使用了它的默认规则。

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

所以修改CFLAGS而不是CXXFLAGS,它应该有效。