天天看點

OpenOffice中makefile檔案描述

dmake工具使用makefile.mk(dmake是openoffice編譯工具)。

下面的部分描述一般的makefile.mk的檔案結構:

  • makefile.mk 檔案的一般結構
  • 生成的對象檔案和庫
  • 生成的資源檔案
  • 生成的應用
  • 生成的共享庫和動态連結庫
  • makefile檔案的内部結構
    • settings.mk

       檔案
    • target.mk

       檔案
  • 設定附加選項
  • 額外目标的建立
    • Add Targets to 

      all

    • Adding Targets to a Makefile That Include Targets
    • Declaring Dependencies Before Adding Targets

makefile.mk 檔案的一般結構

makefile檔案一般的結構如下:

PRJ=..

PRJNAME=SW

TARGET=core

.include:settings.mk

# use the predefined macros

.include:target.mk

            

下面的表格描述在上面中用到的宏:

函數描述

PRJ

此宏描述了現在子產品的根目錄的相對位置

PRJNAME

此宏指定子產品的名稱,此名稱必須是唯一的。

TARGET

該宏指定一個辨別符為目前目錄。在子產品内,該名稱必須是唯一的,或者在輸出檔案或者solver樹種檔案名可能會發生沖突。

生成對象檔案和庫

下表描述了用于生成對象檔案和庫檔案的宏。這些宏中的x表示在1到9之間的數字。這指定支援多達9個不同的庫。

函數描述

OBJFILES=$(OBJ)$/file1.obj $(OBJ)$/file.obj  SLOFILES=$(SLO)$/file1.obj $(SLO)$/file.obj

你必須設定這個宏來從以下源檔案生成相應的目标檔案:
  • file.cxx

  • file1.cxx

這個宏確定build過程建立編譯器需要的對象檔案,這些對象檔案在輸出樹的obj或者slo目錄下。在linux,Solaris和Mac OS X下,obj目錄下建立假的.obj檔案和.ofiles檔案。

You can use these targets can be used to compile C and C++ sources found in different locations. See the 

rules.mk

 file for details.

 可以使用這些目标檔案用來編譯不同的位置C和C++源代碼。檔案的詳細資訊請參閱rules.mk。

build過程通常從目标檔案的輸出樹的lib子目錄下建立一個庫。庫的名稱是變量$TARGET的值。在linux,Solaris和Mac OS X下,obj目錄下僅建立假的.obj檔案。

LIBTARGET=NO

當不想編譯一個庫的時候可以設定此宏。

LIBxTARGET=$(LB)$/name.lib

可以使用這種格式的多個庫宏編譯庫,這些庫不包含所有對象目錄中的檔案或合并不同的庫。

LIBxARCHIV=$(LB)$/libname.a

設定支援的靜态連結庫,linux,Solaris和 Mac OS X支援此宏。

LIBxOBJFILES

指定綁定到連結庫的目标檔案。

LIBxFILES

指定連結到連結庫的更多檔案(further files)

生成的資源檔案

下面的表格描述了用于産生資源檔案的宏,德文語言資源檔案預設編譯。為支援其他的地區,環境變量UPDATER必須設定為YES,同時相應的地區環境變量RES_language也必須設定。

宏名稱中的x代表1--9數字,這說明支援最多9個不同的資源檔案。

功能描述

SRCFILES=file1.src file2.src

必須設定這個宏産生資源檔案。需要從這些檔案中建立一個資源檔案,會在輸出樹的srs子目錄中建立$(TARGET).srs檔案,例如:

SRCTARGET = $(SRS)$/$(TARGET).srs

SRSxNAMES

 和

SRSxFILES

可以使用這些宏支援編譯不同的srs檔案。

RESLIBxNAME

 和

RESLIBxSRSFILES

可以使用這些宏編譯資dll檔案。

生成的應用

下表顯示的用于産生應用的宏。

功能描述

APPxTARGET

表示應用的檔案名。應用總是build到輸出樹的bin目錄下。

APPxOBJS

表示連結到應用程式的對象檔案。不要用這個宏編譯對象,因為它是不承認的依賴。

APPxSTDLIBS

表示連結到應用的輸入庫。這些都是标準庫,例如.a和.so檔案。

APPxLIBS

表示從相同的子產品連結到應用的庫。對UNIX,這些為對象檔案的簡單的文本清單,而不是正常的二進制庫。

APPxDEF

表示一個定義檔案,如果在連結時,你使用一個,僅win32中使用。

APPxDEPN

表示依賴。

APPxRES

表示系統資源,僅在win32中。

APPxICON

表示應用圖示,僅在win32中。

生成的共享庫和動态連結庫

下面表格描述用于産生恭喜庫或者動态連結庫(DLLS)的宏。

功能描述

SHLxTARGET

表示共享庫的檔案名。

在win32中,共享庫總是編譯為 

$(shlxtarget).dll,建立到輸出樹bin目錄下。

在UNIX。共享庫編譯為lib$(shlxtarget).so,放到lib目錄下。

UPD and DLLPOSTFIX

提供平台和釋出獨立的應用: 

在windows NT上,bla$(UPD)$(DLLPOSTFIX) 在釋出599的時候會生成 bla599mi.dll

SHLxOBJS

指定建立庫的對象檔案。

SHLxSTDLIBS

導入庫連結

SHLxLIBS

指定的庫從相同子產品到放到共享庫

SHLxDEF

指定的導出符合檔案,僅僅支援win32系統。

SHLxDEPN

訓示依賴

SHLxRES

使用此宏的系統依賴資源

SHLxIMPLIB

指定建立的導入檔案,僅僅支援win32平台。

DEFxNAME

指定定義檔案的名稱,通常是一個類似的共享庫的名稱。

DEFxDEPN

訓示定義檔案依賴。

DEFLIBxNAME

指定庫名稱解析的符合,僅僅支援win32平台。

DEFxDES

定義檔案的說明

DEFxEXPORTyy

符号名稱。y在宏中的範圍為1-99。

DEFxEXPORTFILE

檔案導出的符合。

下略,有空繼續翻譯。

原文位址:http://www.openoffice.org/tools/build_env_mkfiles.html