当前位置:  技术问答>linux和unix

关于Makefile

    来源: 互联网  发布时间:2016-05-04

    本文导语:  .PHONY = all clean veryclean TARGET = test_main SOURCES = $(wildcard *.c) $(wildcard *.cc) $(wildcard *.cxx) $(wildcard *.cpp)  OPT = -g -O0 -Wall CC = gcc CFLAGS += $(OPT) CXX = g++ CXXFLAGS += $(OPT)  OBJS = $(addsuffix .o, $(basename $(SOURCES))) L...

.PHONY = all clean veryclean
TARGET = test_main
SOURCES = $(wildcard *.c) $(wildcard *.cc) $(wildcard *.cxx) $(wildcard *.cpp) 
OPT = -g -O0 -Wall
CC = gcc
CFLAGS += $(OPT)
CXX = g++
CXXFLAGS += $(OPT) 
OBJS = $(addsuffix .o, $(basename $(SOURCES)))
LIBS = -lpthread
all: $(TARGET)
$(TARGET): $(OBJS)
$(CXX) $(LDFLAGS) $^ -o $@ $(LIBS)
clean:
-rm -rf *.o *.d core* 
veryclean: clean
-rm -rf $(TARGET)
 
# common block
# add auto dependency generation to default rule
COMPILE.c += -MMD
COMPILE.cc += -MMD

DFILES := $(OBJS:.o=.d)
ifneq (${MAKECMDGOALS}, clean)
-include $(DFILES)
endif
# end of common block 

小弟刚学Makefile, 网上找了一个,有几点看不明白, 请赐教
1.$(LDFLAGS) 没有定义,展开却和CXXFLAGS相同?
2.COMPILE.c += -MMD
 COMPILE.cc += -MMD 是什么意思?
3.$(CXX) $(LDFLAGS) $^ -o $@ $(LIBS)如何展开,为什么最后的目标文件也在这里展开

|
1 LDFLAGS 没有显式定义,所以是空的,而 CXXFLAGS 是定义过的,两者不可能相同

不知 lz 从哪看两者展开是相同的

2 -MMD 是 gcc 中跟预处理相关的选项,具体见 gcc 文档

3 $(CXX) $(LDFLAGS) $^ -o $@ $(LIBS) 的话,直接替换就行了

g++ $(OBJS) -o $(TARGET) -lpthread 


其实,lz 可能不知道的是这里用 make 的隐式规则

因为 Makefile 里没有写 obj 生成的命令,所以按隐式规则编译

COMPILE.c 这些是隐式规则里指定编译器和编译选项的变量

切换到没有 makefile 的目录,用 make -p 就可以看到全部的隐式规则

|
1 。 没定义,就为空

3。
看看这里:

http://topic.csdn.net/u/20081219/16/df540701-5177-4a52-932e-0bdd4f8e3071.html

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3