首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解Makefile

了解Makefile
EN

Stack Overflow用户
提问于 2012-07-11 08:21:45
回答 1查看 2.1K关注 0票数 3

我有以下make文件:

代码语言:javascript
复制
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命令时,输出是

代码语言:javascript
复制
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

而不是:

代码语言:javascript
复制
gcc -g -O2 -W -Wall -Wno-unused -Wno-multichar ...

似乎cxx变量覆盖了cc变量。为什么会这样呢?

另外,"include =“在这种情况下是做什么的?它似乎没有设置为任何值。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-11 08:25:56

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11423873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档