0

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)
4

1 回答 1

0

问题是你有一个 make 规则,%.o : %.c但没有%.o : %.cpp。运行 make 时,'%.cpp' 的隐式 make 规则运行,但隐式规则不包含对CFLAGSor的引用CINCLUDE

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

CXXFLAGS = $(CFLAGS)

%.o : %.cpp
    $(CXX) -c $(CXXFLAGS) $(CINCLUDE) $< -o $@
于 2013-02-05T01:33:57.320 回答