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

关于编写makefile的问题

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

    本文导语:  前提:目录A下面有三个子目录,分别为B,C,D,且这三个子目录下有各自的源程序,(源程序的种类可能为C/CC/CPP) 要求:在该目录下编写makefile,自动搜索B和C目录下的源程序,编译(且编译时输出编译信息,即使用echo语...

前提:目录A下面有三个子目录,分别为B,C,D,且这三个子目录下有各自的源程序,(源程序的种类可能为C/CC/CPP)

要求:在该目录下编写makefile,自动搜索B和C目录下的源程序,编译(且编译时输出编译信息,即使用echo语句),并生成动态库。

问题:
   (1) 已解决问题:在该目录下编写makefile,自动搜索B和C目录下的源程序,编译————(在本目录下生成相应的.o文件),并生成动态库。 缺点:各子目录下不允许有同名源程序
    (2)未解决问题:在该目录下编写makefile,自动搜索B和C目录下的源程序,编译————(在相应子目录下生成相应的.o文件),并生成动态库。   优点:各子目录下运行有同名源程序。
    

我的问题就是想请教各位,我如何实现上面为解决的问题:
  即使用变量表示要编译的子目录时,用何种语句实现转至该目录,自动识别源程序,编译源程序,并生成动态库。 

下面是我写的关于(1)的makefile,并且已经验证过,可以正常编译。

PROGRAM:=test

## The library and the link options ( C and C++ common).

LIBPATH:=../bin/release_bin

INCLUDE:=-I../include
DIRS:=B  C
SRCS:=$(foreach dir,$(DIRS),$(wildcard $(dir)/*.c))
       $(foreach dir,$(DIRS),$(wildcard $(dir)/*.cc))
       $(foreach dir,$(DIRS),$(wildcard $(dir)/*.cpp))

OBJS:=$(addsuffix .o, $(basename $(notdir $(SRCS))))

CFLAGS:= -Wall -fPIC 

LIBOBJ:=lib$(addsuffix .so,$(PROGRAM)) 


.PHONY:all lib exe clean 

all: lib


$(OBJS):$(SRCS)

for file in $(SRCS);do

          echo "$(CC) -c $(CFLAGS) $(INCLUDE) $$file";

          $(CC) -c $(CFLAGS) $(INCLUDE) $$file ;

done


lib: $(OBJS)

$(CC) -shared -fPIC -o $(LIBOBJ) $^ 

mv $(LIBOBJ)  $(LIBPATH)

clean:

$(RM)  *.o

|
太麻烦了,准不准一步生成?
也不需要echo吧,默认会显示编译命令,除非你想隐藏

CC      = g++
CCFLAGS = -Wall
LIBS    =

DIRS    = A B
SRCS    = $(foreach dir,$(DIRS),$(wildcard $(dir)/*.c $(dir)/*.cpp $(dir)/*.cc))
TARGET  = libfoo.so

$(TARGET): $(SRCS)
$(CC) $(CCFLAGS) -shared $(SRCS) -o $(TARGET) $(LIBS)

|
看看 老徐《makefile中文手册》,makefile的高级用法都清楚了。

|
在B/C目录下编写各自的makefile
用一个shell统一调度一下,如何..

    
 
 

您可能感兴趣的文章:

  • 函数互相调用时Makefile编写
  • 我编写的Makefile文件怎么老是有错误那??
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • 请教Makefile文件编写
  • 想学编写内核和编makefile文件要看什么书
  • makefile文件的编写问题
  • 急求关于怎么编写makefile的资料???
  • 关于动态库的Makefile的编写
  • 如何编写Makefile,使得只编译改变的文件
  • cmake怎么编写才使Makefile是高试模式
  • 请教makefile文件编写问题
  • 编写一个makefile
  • 求教solaris下Makefile的编写
  • Makefile编写
  • 在编写MAKEFILE的时候,如何判断一个文件是否存在呢???
  • 求教有关makefile编写的问题 MYSRCS:%c=%o
  • makefile文件的编写
  • makefile编写问题
  • 编写内核模块程序的makefile文件make错误
  • Makefile编写疑问,需要这么麻烦吗?
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  • 请问脚本编写的一些问题?
  • 关于D-link无线网卡的驱动编写问题
  • 关于C编写的串口程序的问题?
  • 新手问一个简单问题:用什么命令来结束自己编写的服务端程序
  • 关于linux下自己编写的程序运行问题!!!!!!!!!!!
  • 编写linux设备驱动程序的一个问题
  • 关于嵌入式编写的步骤的问题
  • 菜鸟关于关于编写shell script的问题
  • 关于库的编写问题!
  • 菜鸟问题——其他语言怎样使用Java编写的程序(明确地说,使Class)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编写 linux shell 有什么好的编写工具呢?
  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 用Qt3.1.4编写的程序,如何加入自己编写的另外一个动态库呀?诚恳指教!!
  • 如图 scsi <---> scsi controller <---> pci <---> cpu 如果我想对scsi编写驱动我该对哪个部分编写?
  • 用什么工具编写JSP,可以象用InterDev编写ASP一样方便快捷?
  • 编写程序如编写人生,有人和我的意见相同吗?
  • 请问用jsp编写程序,非要编写代码么?有没有什么象fontpage2000那样的工具,能够生成一些固定模板的工具?就是说不用全部都写的工具。望
  • 用jsp编写web程序到底和java serverlet编写web程序有和区别
  • socket中,从client端(用java编写的)传到server端(用c编写的)的字符串为何总多一个ASCII码为10的字符呀?
  • 如何用java编写一个NT平台下的标准服务?
  • 关于用vj编写sniffer一问。
  • Linux下如何编写脚本文件
  • javascript开源软件 iis7站长之家
  • Linux有没有类似bat文件,如何编写。
  • 用JAVA编写COM组件
  • 关于版本和bug管理的rule(规则)的编写
  • 在windows下可以用Code::Blocks编写linux程序吗?
  • linux下用java编写邮箱客户端程序与在windows下有什么不同??
  • AIX下如何编写批处理命令和计划任务
  • 怎么用JBuild编写java console程序


  • 站内导航:


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

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

    浙ICP备11055608号-3