xbuin 发表于 2006-10-17 18:10:12

关于makefile,多谢!

看了一些关于makefile的资料,大部分告诉的都是写一些比较规整的东西,现在手头上有一个Apache.mk文件,确实看不懂,哪位大哥大姐帮忙看一下,多谢。这个东西的文件结构是,Apache文件夹中有xerces-c-src_2_6_0.tar、 xerces-c-src2_2_0.tar两个压缩文档,文件夹Xerces-C++,里面应该是头文件及库文件, 还有三个文件Apache.mk、Apache.mo、Apache.ms。源文件为:

1 include $(VROOT)/sde/sdecommon.mk
2
3 VERSION = 2.0
4 VENDOR = The Apache Software Foundatation http://www.apache.org
5
6 INST_LOC := $(VROOT)/obj/$(SEL_TARGET)/sde/Apache/Xerces-C++/2.2/lib
7 INST_LOC2 := $(VROOT)/obj/$(SEL_TARGET)/sde/opt/LSS/lib
8 LXINST_LOC := $(VROOT)/obj/$(SEL_TARGET)/sde/Apache
9 LX_XERCES_SRC_2_6_0 := $(VROOT)/sde/Apache/xerces-c-src_2_6_0.tar.gz
10 LX_XERCES_REL_PATH := Xerces-C++/2.6
11
12 FILE_LST := \
13         libxerces-c.so \
14         libxerces-c.so.22.0 \
15         libxerces-c.so.22 \
16         $(ENDLIST)
17
18 LXFILE_LST := \
19         libxerces-c.so \
20         libxerces-c.so.26.0 \
21         libxerces-c.so.26 \
22         $(ENDLIST)
23
24 for file $(FILE_LST)
25         $(INST_LOC)/$(file) :FILEINSTALL: $(VROOT)/sde/Apache/Xerces-C++/2.2/lib/libxerces-c.so.22.0
26               SEL=solaris8_sparc
27
28         $(INST_LOC2)/$(file) :FILEINSTALL: $(VROOT)/sde/Apache/Xerces-C++/2.2/lib/libxerces-c.so.22.0
29               SEL=solaris8_sparc
30
31 end
32
33 LXinstall2.6.0 :LOC_DEF: install_Apache
34         SEL=linux_ppc
35         SEL=linux_i386
36
37 if "$(SELECTORS)" == "linux_ppc"
38 LXinstall2.6.0: $(LX_XERCES_SRC_2_6_0) (MVcc) (MVCC) .VIRTUAL
39         rm -rf $(LX_XERCES_REL_PATH)
40         $(MKPATH)$(LX_XERCES_REL_PATH)
41         cp $(*:N=*$(LX_XERCES_SRC_2_6_0:B:S):P=A) $(LX_XERCES_REL_PATH)/.
42         rm -f $(LX_XERCES_REL_PATH)/xerces-c-src_2_6_0.tar
43         $(GUNZIP) $(LX_XERCES_REL_PATH)/xerces-c-src_2_6_0.tar.gz
44         cd $(LX_XERCES_REL_PATH)
45         tar xvf xerces-c-src_2_6_0.tar
46         cd ../..
47         export XERCESCROOT=$(ROOT)/obj/$(SEL_TARGET)/sde/Apache/linux_ppc/Xerces-C++/2.6/xerces-c-src_2_6_0
48         cd $(ROOT)/obj/$(SEL_TARGET)/sde/Apache/linux_ppc/Xerces-C++/2.6/xerces-c-src_2_6_0/src/xercesc
49         mv runConfigure runConfigure.ofc
50         sed -e 's?g++?$(MVCC)?' runConfigure.ofc > runConfigure
51         chmod 755 runConfigure
52         mv Makefile.incl Makefile.incl.ofc
53         sed -e 's?-L/usr/lib??' Makefile.incl.ofc > Makefile.incl
54         autoconf
55         runConfigure -plinux -c$(MVcc) -x$(MVCC) -minmem -nsocket -tnative -rpthread -C--build=`config.guess` -C--host=i68    6-unknown-linux-gnu -C--target=powerpc-unknown-linux-gnu
56         $(LXGMAKE)
57 else
58 LXinstall2.6.0: $(LX_XERCES_SRC_2_6_0) .VIRTUAL
59         $(MKPATH)$(LX_XERCES_REL_PATH); \
60         cp $(*:N=*$(LX_XERCES_SRC_2_6_0:B:S):P=A) $(LX_XERCES_REL_PATH)/. ; \
61         rm -f $(LX_XERCES_REL_PATH)/xerces-c-src_2_6_0.tar; \
62         $(GUNZIP) $(LX_XERCES_REL_PATH)/xerces-c-src_2_6_0.tar.gz ; \
63         cd $(LX_XERCES_REL_PATH); \
64         tar xvf xerces-c-src_2_6_0.tar; \
65         cd ../..; \
66         export XERCESCROOT=$(ROOT)/obj/$(SEL_TARGET)/sde/Apache/$(SEL_TARGET)/Xerces-C++/2.6/xerces-c-src_2_6_0; \
67         cd $(ROOT)/obj/$(SEL_TARGET)/sde/Apache/$(SEL_TARGET)/Xerces-C++/2.6/xerces-c-src_2_6_0/src/xercesc; \
68         autoconf; \
69         runConfigure -plinux -c$(RHcc) -x$(RHCC) -minmem -nsocket -tnative -rpthread
70         $(LXGMAKE)
71 end
72
73 /* Need to make a dependency to have the tarfile untared before
74* a copy of the products is performed. Therefore, linux_ppc_hosted
75* is used as the copy selector to force the untar to be complete first
76*/
77 linux_ppc_hosted : linux_ppc
78 for file $(LXFILE_LST)
79         $(INST_LOC2)/$(file) :FILEINSTALL: $(VROOT)/obj/$(SEL_TARGET)/sde/Apache/linux_ppc/Xerces-C++/2.6/xerces-c-src_2_6    _0/lib/$(file)
80               SEL=linux_ppc_hosted
81 end
82
83 linux_i386_copy : linux_i386
84 for file $(LXFILE_LST)
85         $(INST_LOC2)/$(file) :FILEINSTALL: $(VROOT)/obj/$(SEL_TARGET)/sde/Apache/$(SEL_TARGET)/Xerces-C++/2.6/xerces-c-src    _2_6_0/lib/$(file)
86               SEL=linux_i386_copy
87 end

哪位可以告诉我它大体说了个什么事,多谢。
另外还有,*.mk文件到底是个什么东西,就是makefile吗?然后剩下的那两个ms及mo文件是干什么的?

snnn 发表于 2006-10-24 11:45:37

首先纠正你一个概念。
Unix文件系统不区分文本文件与二进制文件,而且大部分程序不以后缀名区分文件类型。
include子句,就是把其他文件插入到include语句所在的位置。

其它的你慢慢读吧。有什么不会的请继续提问。
页: [1]
查看完整版本: 关于makefile,多谢!