makefile原來是那麼簡單的東西,為啥教程都那麼複雜呢?

來源:互聯網
上載者:User
    小弟剛剛學LINUX 下的C/C++編程,同事告訴我要用makefile來編譯 ,再問之如何寫makefile時,答:makefile是很難的東西,你可以使用國外高手寫的makefile來編譯。
    疑惑中,開啟所謂高手的makefile,果然好長,果然看不懂。
    不服氣,到網上找一些makefile的教程,儘是些檔案依賴、目標之類的理解不了的名次。
   於是,謬論就這樣在心中紮根了。

   兩星期後,也就是今天,偶然的一個測試讓我明白了————makefile實在是很簡單,為啥教程都那麼複雜呢?
   當然,本文所提到的,是針對初學者的"Hello World!"層級的makefile,並不能否認makefile的進階功能的複雜和強大。我目前所能夠理解到的makefile,就是一個批次程式而已。(如同Linux下的shell檔案)
    makefile關鍵的處理步驟,就是調用編譯器來執行編譯,windows下是cl,Linux下是g++。Windows下的make程式是nmake.exe,Linux下是make。

   咱們先寫一個簡單的C程式:

#include <stdio.h>

int main()
{
    printf("hello world!/n");
    getchar();
    return 1;
}
 

    把這個程式儲存為test.cpp。
   在WINDOWS下執行編譯(先執行c:/programe files/vs2003/Vc7/bin/vcvars32.bat):cl test.cpp
   在Linux下執行編譯:g++ test.cpp

   很簡單嘛!
   然後寫makefile檔案:

anyname:
        cl test.cpp
        #在linux下,上一行寫成 g++ test.cpp
        #注意cl這一行:前面的縮排是一個tab鍵,一定要是tab才可以
       #第一行的anyname可以是任何名字,但是要加上冒號

  在WINDOWS下使用NMAKE編譯(先執行c:/programe files/vs2003/Vc7/bin/vcvars32.bat):nmake.exe
  在Linux下使用MAKE編譯:make

  呵呵,很簡單吧?其實makefile中大多都是變數的定義,最終把這些變數的值作為cl或g++的參數來使用。
   希望任何教程都先展示一個Hello World後在開始傳教,對於菜鳥來說,第一次成功的信心是最好的鼓勵。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.