2014-12-03 47 views
0

以下是我在Postgres中遇到的makefile,我不明白它是如何工作的。我看到一些簡單的Makefile例子,它們有編譯的命令,但是這個例子似乎有所不同。任何人都可以解釋這個makefile的工作原理基本上我需要理解這個之前我修改它爲我的目的。這個makefile的起點在哪裏

subdir = src/backend/access/transam 
top_builddir = ../../../.. 
include $(top_builddir)/src/Makefile.global 

OBJS = clog.o multixact.o \ 
    xlogreader.o xlogutils.o 

include $(top_srcdir)/src/backend/common.mk 

xlog.o: xlog.c $(top_srcdir)/src/include/catalog/catversion.h 

如果您需要更多信息,請讓我知道。 謝謝。

回答

2
subdir = src/backend/access/transam 
top_builddir = ../../../.. 

設置一些變量

include $(top_builddir)/src/Makefile.global 

包括全球makefile文件(可能使用兩個先前設置的變量以某種方式)。 (我假設)創建一個OBJS變量。

include $(top_srcdir)/src/backend/common.mk 

包括另一生成文件(這大概使用OBJS和定義規則/標記/等。用於構建文件)。

xlog.o: xlog.c $(top_srcdir)/src/include/catalog/catversion.h 

顯式處理的先決條件的xlog.o目標文件(可能是因爲把這個在OBJS會做一些不希望的)。

如要進一步瞭解subdirOBJS用於精確地(或者還有什麼你可以在這個文件中設置),您將需要閱讀和理解src/Makefile.globalsrc/backend/common.mk