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 規則CFLAGSが実行されますが、暗黙的な規則にはまたはへの参照が含まれていませんCINCLUDE

CXXソースは c++ であるため、c++ コンパイル用に別のルールを追加して、変数を適切に設定する必要があるでしょう。

CXXFLAGS = $(CFLAGS)

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