gpt4 book ai didi

makefile - 理解 Makefile

转载 作者:行者123 更新时间:2023-12-02 21:55:27 26 4
gpt4 key购买 nike

我有以下 make 文件:

CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2 -W -Wall -Wno-unused -Wno-multichar
COMPONENTHEADER = Q_OBJECT
CPP = gcc -E
CPPFLAGS = -I/usr/include/Inventor/annex -D_REENTRANT -I/usr/share/qt3/include
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2 -fno-exceptions -W -Wall -Wno-unused -Wno-multichar -Woverloaded- virtual
CYGPATH_W = echo
GUI = QT
Gui = Qt
INCLUDES =
LIBS = -lSoQt -lqt-mt -lXmu -lXi -lCoin -lGL -lXext -lSM -lICE -lX11 -ldl -lpthread -lm -lcxcore -lcv -lhighgui -lcvaux
OBJS = MathTools.o PointCloud.o ExtractFeatures.o Tile.o Shape.o RoadDynamic.o
SRCS = MathTools.cpp PointCloud.cpp ExtractFeatures.cpp Tile.cpp Shape.cpp RoadDynamic.cpp main.cpp
HDRS = constants.h Shape.h MathTools.h PointCloud.h ExtractFeatures.h Tile.h RoadDynamic.h
WIDGET = QWidget *

all: main


main: main.o ${OBJS}
${CC} ${CFLAGS} ${INCLUDES} -o $@ main.o ${OBJS} ${LIBS}

.c.o:
${CC} ${CFLAGS} ${INCLUDES} -c $<

depend:
makedepend ${SRCS}

clean:
rm *.o core *~

tar:
tar cf code.tar Makefile *.c *.h testfile1

print:
more Makefile $(HDRS) $(SRCS) | enscript -2r -p listing.ps

我想知道为什么当我运行 make 时输出是

g++ -g -O2 -fno-exceptions -W -Wall -Wno-unused -Wno-multichar -Woverloaded-virtual -I/usr/include/Inventor/annex -D_REENTRANT -I/usr/share/qt4/include    -c -o main.o main.cpp

而不是:

gcc -g -O2 -W -Wall -Wno-unused -Wno-multichar ...

看来 cxx 变量覆盖了 cc 变量。这是为什么?

在这种情况下“include =”还有什么作用?似乎没有设置任何内容。

谢谢

最佳答案

因为您的目标文件显然是从 .cpp 文件构建的。您没有从 .cpp 文件构建 .o 文件的明确规则,因此 Make 使用 implicit rule $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c

关于makefile - 理解 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11423873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com