1. 程式人生 > >Makefile.am 常用變數說明

Makefile.am 常用變數說明

本文用於說明編寫AutoTool工具中Makefile.am相關變數的用法

一、概述

Makefile.am是AutoTool編譯時讀取相關編譯引數的配置檔案,檔案區分大小寫,從頂層目錄到子工程生成二進位制檔案的路徑上的目錄都要存在,如果中間目錄不存在該檔案,其下的子目錄不會被編譯。

其中

中間目錄的Makefile.am至少包含

SUBDIRS  

最終生成可執行檔案檔案的Makefile.am必須包含

noinst_LIBRARIES 或 bin_PROGRAMS 和 XXX_SOURCES

另外,不同的AutoTool版本可能會有差異。

二、變數說明

1. SUBDIRS  

說明下面當前目錄下的哪些子目錄需要編譯,多個目錄用空格分開

SUBDIRS=src tests tools

說明需要進入到src、tests 、tools三個目錄中編譯

2. DIST_SUBDIRS 

(待確認)

3. noinst_LIBRARIES

表示該工程用於生成庫檔案

noinst_LIBRARIES = libcommon.a

表示用於該工程生成庫檔名為libcommon.a

4. XXX_SOURCES

表示要編譯的原始檔,XXX需要用生成的目標檔名替換,如果檔名中含".",則需要改為“_”; 多個原始檔用空格分開,也可以用變量表示檔案

libcommon_a_SOURCES = ${common_sources}  

表示生成libcommon.a需要編譯的原始檔來源變數common_sources

5. 自定義變數

common_sources = common.h common.cpp

表示定義common_sources 為 common.h common.cpp

6. clean-local:

執行make clean命令是,實際執行的命令,其中,命令如下文-rm前面不能是空格,必須是Tab;*表示萬用字元號,多個檔案用空格隔開

clean-local:

-rm -f *.gcov *.gcno *.gcda 

表示執行make clean清理*.gcov、*.gcno、*.gcda

7. AM_CPPFLAGS 、AM_CFLAGS 

預定義變數,,g++編譯器的附加引數

AM_CPPFLAGS = -I${top_srcdir}/src  

AM_CFLAGS = -I${top_srcdir}/src  

-I表示搜尋標頭檔案時的附加路徑

8. LDADD 

表示編譯本工程的附加連結庫

LDADD = ${top_srcdir}/src/common/libcommon.a 

表示編譯時需要連線 ${top_srcdir}/src/common/libcommon.a

9. top_srcdir

預定義變數,工程的頂層目錄

10. bin_PROGRAMS

表示該工程生成可執行檔案

bin_PROGRAMS = prog2  

prog2_SOURCES = main.cpp  
表示生成可執行檔案prog2,其中原始檔為main.cpp  

備註:

初學linux程式設計,如發現不正確的地方請不吝指出,感謝。