makefile中的变量错误

时间:2013-02-05 01:07:08

标签: makefile-project

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 个答案:

答案 0 :(得分:0)

问题是您有%.o : %.c的制作规则,但%.o : %.cpp没有。运行make时,运行'{。}}的implicit make rule,但隐式规则不包含对CFLAGSCINCLUDE的引用。

由于您的源代码是c ++,您可能希望为c ++编译添加另一个规则并适当地设置CXX变量。

CXXFLAGS = $(CFLAGS)

%.o : %.cpp
    $(CXX) -c $(CXXFLAGS) $(CINCLUDE) $< -o $@