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)
答案 0 :(得分:0)
问题是您有%.o : %.c
的制作规则,但%.o : %.cpp
没有。运行make时,运行'{。}}的implicit make rule,但隐式规则不包含对CFLAGS
或CINCLUDE
的引用。
由于您的源代码是c ++,您可能希望为c ++编译添加另一个规则并适当地设置CXX
变量。
CXXFLAGS = $(CFLAGS)
%.o : %.cpp
$(CXX) -c $(CXXFLAGS) $(CINCLUDE) $< -o $@