• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我的CPP之路

            路漫漫其修遠(yuǎn)兮
            隨筆 - 42, 文章 - 0, 評論 - 16, 引用 - 0
            數(shù)據(jù)加載中……

            [轉(zhuǎn)]一個簡單的makefile示例及其注釋

            http://www.cnblogs.com/sld666666/archive/2010/04/08/1707789.html
            一個簡單的makefile示例及其注釋
            posted @ 2010-04-08 21:29 sld666666 閱讀(698) 評論(2)

              相信在unix下編程的沒有不知道m(xù)akefile的,剛開始學(xué)習(xí)unix平臺下的東西,了解了下makefile的制作,覺得有點(diǎn)東西可以記錄下。
              下面是一個極其簡單的例子:
              現(xiàn)在我要編譯一個Hello world,需要如下三個文件:
              1. print.h
                  #include<stdio.h>
                  void printhello();

              2. print.c
                  #include"print.h"
                  void printhello(){
                    printf("Hello, world\n");
                  }

              3. main.c
                  #include "print.h"
                  int main(void){
                    printhello();
                    return 0;
                  }

              好了,很簡單的程序了。如果我們想要編譯成功需要哪些步驟呢?
              我認(rèn)為在這里需要理解的就兩步:
              #  為每一個 *.c文件生成 *o文件。
              #  連接每一個*o文件,生成可執(zhí)行文件。
              下面的makefile 就是根據(jù)這樣的原則來寫的。


            一:makefile 雛形:

             
            #makefile的撰寫是基于規(guī)則的,當(dāng)然這個規(guī)則也是很簡單的,就是:
            #target : prerequisites
              command  //任意的shell 命令

            實(shí)例如下:
            makefile:
                helloworld : main.o print.o #helloword 就是我們要生成的目標(biāo)
                             # main.o print.o是生成此目標(biāo)的先決條件
                  gcc -o helloworld main.o print.o#shell命令,最前面的一定是一個tab鍵

                mian.o : mian.c print.h
                  gcc -c main.c
                print.o : print.c print.h
                  gcc -c print.c
                
                clean :          
                    rm helloworld main.o print.o
              OK,一個簡單的makefile制作完畢,現(xiàn)成我們輸入 make,自動調(diào)用Gcc編譯了,  輸入 make clean就會刪除 hellowworld mian.o print.o


            二:小步改進(jìn):


              在上面的例子中我們可以發(fā)現(xiàn) main.o print.o 被定義了多處,我們是不是可以向C語言中定義一個宏一樣定義它呢?當(dāng)然可以:
            makefile:
                objects =  main.o print.o #應(yīng)該叫變量的聲明更合適

                helloworld : $(objects) //聲明了變量以后使用就要$()了
                  gcc -o helloworld$(objects)
                 mian.o : mian.c print.h
                  gcc -c main.c
                print.o : print.c print.h
                  gcc -c print.c
                
                clean :          
                    rm helloworld $(objects)
            修改完畢,這樣使用了變量的話在很多文件的工程中就能體現(xiàn)出方便性了。


            三:再進(jìn)一步:


              再看一下,為沒一個*.o文件都寫一句gcc -c main.c是不是顯得多余了,能不能把它干掉?而且 main.c 和print.c都需要print.h,為每一個都寫上是不是多余了,能不能再改進(jìn)?
              能,當(dāng)然能了:
            makefile:
                 objects =  main.o print.o

                helloworld : $(objects)
                  gcc -o helloworld$(objects)
                
                $(objects) : print.h # 都依賴print.h
                 mian.o : mian.c  #干掉了gcc -c main.c 讓Gun make自動推導(dǎo)了。
                print.o : print.c     
                clean :          
                    rm helloworld $(objects)

            好了,一個簡單的makefile就這樣完畢了,簡單吧。

            =========華麗的分割線=========
            還有一個網(wǎng)絡(luò)人氣很高的makefile教程(更詳細(xì)):
            http://blog.csdn.net/haoel/archive/2004/02.aspx
            跟我一起寫 Makefile - 陳皓

            還有法語版本的makefile介紹:
            http://gl.developpez.com/tutoriel/outil/makefile/
            Introduction à Makefile

            posted on 2010-12-24 08:48 yanvenhom 閱讀(1046) 評論(0)  編輯 收藏 引用 所屬分類: Makefile

            久久久久国产一区二区三区| 久久精品国产久精国产| 久久精品国产亚洲av瑜伽| 情人伊人久久综合亚洲| 一本久久a久久精品亚洲| 看全色黄大色大片免费久久久| 无码精品久久久天天影视| 亚洲一区精品伊人久久伊人 | 精品熟女少妇aⅴ免费久久| 人妻精品久久无码区| 99久久精品免费看国产一区二区三区 | 无码伊人66久久大杳蕉网站谷歌| 狠狠狠色丁香婷婷综合久久俺| 久久国产成人亚洲精品影院| 久久午夜羞羞影院免费观看| 中文字幕无码久久人妻| 国产成人精品久久亚洲高清不卡 | 久久精品国产亚洲av日韩| 日韩精品无码久久久久久| 久久国产热这里只有精品| 精品久久久久久久| 久久久久久久亚洲Av无码| 久久亚洲AV无码精品色午夜麻豆 | 色欲综合久久中文字幕网| 久久这里只有精品视频99| 国产99久久久国产精品~~牛| 精品久久久久久久无码| 国产亚洲精品自在久久| 亚洲AV无码成人网站久久精品大| 亚洲精品国产综合久久一线| 久久综合狠狠综合久久97色| 99久久伊人精品综合观看| 久久精品亚洲欧美日韩久久| 99久久99久久精品国产片| 亚洲人成无码www久久久| 九九久久精品国产| 久久精品99无色码中文字幕| 亚洲欧美成人久久综合中文网| 亚洲国产成人久久精品99 | 国产成人精品久久亚洲| 国产免费久久精品99久久|