Ошибка переменной в make-файле
I have Makefile in Ubuntu12.10 as below
, когда я запускаю его командой make, он отображается как g++ -c -o myprog1.o myprog1.cpp
Кажется, переменные CFLAGS и CINCLUDE не работают.
Может ли кто-нибудь помочь мне проверить это?
Спасибо,
RM = rm -f
CC = gcc
AR = ar rc
CFLAGS= -Wall -g -O2 -std=c++11 -fPIC
CINCLUDE= -I. -I../include
OBJECTS= myprog1.o myprog2.o
STATIC_LIB = libctest.a
$(STATIC_LIB): $(OBJECTS)
$(AR) $(STATIC_LIB) $(OBJECTS)
%.o : %.c
$(CC) -c $(CFLAGS) $(CINCLUDE) $< -o $@
clean:
$(RM) $(OBJECTS)
$(RM) $(STATIC_LIB)
1 ответ
Проблема в том, что у вас есть правило для %.o : %.c
но не для %.o : %.cpp
, Когда вы запускаете make, запускается неявное правило make для "%.cpp", но неявное правило не содержит ссылок на CFLAGS
или же CINCLUDE
,
Так как ваш исходный код находится на C++, вы, вероятно, захотите добавить другое правило для компиляции C++ и настроить CXX
переменные соответственно.
CXXFLAGS = $(CFLAGS)
%.o : %.cpp
$(CXX) -c $(CXXFLAGS) $(CINCLUDE) $< -o $@