Ошибка переменной в 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 $@
Другие вопросы по тегам