2016-06-21 3 views
0

У меня есть файл makefile, указанный ниже. Когда я make я получаю следующую ошибкуmakefile не находит файл заголовка из -I include path

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

Я вручную verfied что test.h присутствует в ../include пути. Я не знаю, почему это не находя file.It заголовка было бы здорово, если бы кто-то мог help.Also я ожидал бы 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 [email protected] $^ 


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

~

ответ

1

Вы не написали правила для строительства timing.o от timing.c, поэтому Make использует правило по умолчанию, которое у него есть для этого.

Но это правило использует CFLAGS, а не CXXFLAGS. Переменная CXXFLAGS появляется в правиле для создания объектных файлов из источников C++.

Так что измените CFLAGS вместо CXXFLAGS, и он должен работать.

+0

@alvits: Вы правы, я делал это очень исправление, когда увидел ваш комментарий. – Beta

Смежные вопросы