我有下面给出的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}
〜
答案 0 :(得分:1)
你还没有编写一个规则来构建来自timing.c的timing.o,所以Make使用了它的默认规则。
但该规则使用的是CFLAGS
,而不是CXXFLAGS
。 CXXFLAGS
变量出现在用于从C ++源构建目标文件的规则中。
所以修改CFLAGS
而不是CXXFLAGS
,它应该有效。