新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 自動生成 Makefile 的全過程詳解

        自動生成 Makefile 的全過程詳解

        作者: 時間:2016-10-10 來源:網絡 收藏

        bin_PROGRAMS

        這個是指定我們所要產生的可執(zhí)行文件的文件名。如果你要產生多個可執(zhí)行文件,那么在各個名字間用空格隔開。

        helloworld_SOURCES

        這個是指定產生“helloworld” 時所需要的源代碼。如果它用到了多個源文件,那么請使用空格符號將它們隔開。比如需要 helloworld.h ,helloworld.c 那么請寫成helloworld_SOURCES= helloworld.h helloworld.c 。

        如果你在bin_PROGRAMS 定義了多個可執(zhí)行文件,則對應每個可執(zhí)行文件都要定義相對的filename_SOURCES 。

        6 、 automake

        我們使用automake --add-missing 來產生Makefile.in 。

        選項--add-missing 的定義是“add missing standard files to package” ,它會讓automake 加入一個標準的軟件包所必須的一些文件。

        我們用automake 產生出來的Makefile.in 文件是符合GNU Makefile 慣例的,接下來我們只要執(zhí)行configure 這個shell腳本就可以產生合適的 Makefile 文件了。

        7 、 Makefile

        在符合GNU Makefiel 慣例的Makefile 中,包含了一些基本的預先定義的操作:

        make

        根據Makefile 編譯源代碼,連接,生成目標文件,可執(zhí)行文件。

        make clean

        清除上次的make 命令所產生的object 文件(后綴為“.o” 的文件)及可執(zhí)行文件。

        make install

        將編譯成功的可執(zhí)行文件安裝到系統(tǒng)目錄中,一般為/usr/local/bin 目錄。

        make dist

        產生發(fā)布軟件包文件(即distribution package )。這個命令將會將可執(zhí)行文件及相關文件打包成一個tar.gz 壓縮的文件用來作為發(fā)布軟件的軟件包。

        它會在當前目錄下生成一個名字類似“PACKAGE-VERSION.tar.gz” 的文件。PACKAGE 和VERSION ,是我們在configure.in 中定義的AM_INIT_AUTOMAKE(PACKAGE, VERSION) 。

        make distcheck

        生成發(fā)布軟件包并對其進行測試檢查,以確定發(fā)布包的正確性。這個操作將自動把壓縮包文件解開,然后執(zhí)行configure 命令,并且執(zhí)行make ,來確認編譯不出現錯誤,最后提示你軟件包已經準備好,可以發(fā)布了。

        ===============================================

        helloworld-1.0.tar.gz is ready for distribution

        ===============================================

        make distclean

        類似make clean ,但同時也將configure 生成的文件全部刪除掉,包括Makefile 。

        五、結束語

        通過上面的介紹,你應該可以很容易地生成一個你自己的符合GNU 慣例的Makefile 文件及對應的項目文件。

        如果你想寫出更復雜的且符合慣例的Makefile ,你可以參考一些開放代碼的項目中的configure.in 和Makefile.am 文件,比如:嵌入式數據庫sqlite ,單元測試cppunit 。


        上一頁 1 2 3 下一頁

        關鍵詞: linux

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 泗洪县| 永平县| 仙居县| 绩溪县| 叙永县| 新巴尔虎右旗| 丽江市| 高安市| 竹北市| 景德镇市| 黄大仙区| 通河县| 工布江达县| 湘潭市| 边坝县| 赤城县| 永吉县| 远安县| 中山市| 乐都县| 南郑县| 子洲县| 台山市| 洞口县| 普兰店市| 石狮市| 孟津县| 博兴县| 丰镇市| 文安县| 竹溪县| 永济市| 桑日县| 行唐县| 郴州市| 堆龙德庆县| 新安县| 扶绥县| 秀山| 安阳市| 醴陵市|