(轉)nmake學習筆記

來源:互聯網
上載者:User

標籤:

1、命令列中調用nmake的基本文法:

namke /f  makefile /x stderrfile  [macrodefs] [targets]

其中makefile為makefile檔案,/x stderrfile為選擇性參數,即把nmake錯誤儲存到檔案stderrfile。

2、makefile的主要文法:

2.1 注釋

      makefile的注釋以#開頭,如:

      # Usage: NMAKE CLEAN (removes all intermediary files)
      # or: NMAKE options (builds one library variant (see below))

2.2 宏

     Makefile的一個重要組成部分是宏。Makefile中的宏和C語言的中宏類似,其實質就是字串替換。其文法很簡單,如下:

     macro name =  macro value 

     直譯就是宏名 =  宏的值 

     VS預定義了很多宏,如OUTDIR,你可以在你的Makefile重新定義這些宏以覆蓋原來的值。

     宏可以使用環境變數,如你的系統有一個OPEN_SOURCE的環境變數,然後你可以這樣定義宏:

     THIRD_PARTY  =  $(OPEN_SOURCE)

     宏的引用用法是 $(宏名)。

2.3 預先處理指令

      Makefile的預先處理指令和C語言的預先處理指令類似,其常用指令如下:

      !ERROR string      ——    顯示錯誤“string”, 然後停止執行,錯誤碼為U1050

      !MESSAGE string  ——   顯示字串,這個一般用於資訊顯示C語言的#pragma message

      !INCLUDE [<]filename[>] —— 包含makefile。

      !IF const ——  如果成立(非零),則處理!F和下一個!ELSE或!ENDIF之間的語句

      還有諸如!IFDEF macroname、!IFNDEF macroname、!ELSE、!ELSEIF、!ELSEIFDEF、!ELSEIFNDEF、!ENDIF和C語言的#if之類的指令的意義是一致的.

2.4 描述塊

     基本文法:

     目標:依賴項

       命令

3、樣本

    建立名為ConsoleTest的控制台程式,在ConsoleTest目錄下建立名為ConsoleTest.vc的檔案,用記事本輸入:

    

1234567891011121314 all: ConsoleTest.exe# compilestdafx.obj: stdafx.cpp    cl -c -D_X86=1 -DWIN32 -D_DEBUG -D_CONSOLE -Istdafx.h stdafx.cpp ConsoleTest.obj: ConsoleTest.cpp stdafx.obj    cl -c -D_X86=1 -DWIN32 -D_DEBUG -D_CONSOLE -Istdafx.h ConsoleTest.cpp # linkConsoleTest.exe: ConsoleTest.obj    link /INCREMENTAL:YES /NOLOGO /subsystem:console /out:ConsoleTest.exe ConsoleTest.obj kernel32.lib clean:    @-if exist *.obj del *.obj

  cl和link簡述:

cl的一些常用選項:

-c: 編譯但不連結

-D: 定義前置處理器,如-D_X86=1:指定在x86平台上編譯,-D_DEBUG:定義前置處理器_DEBUG,

-I:包含的標頭檔

cl的最後一個參數是所編譯的檔案。

 

link的一些常用選項:

/INCREMENTAL:是否啟用增量連結,YES為啟用,NO為不啟用,

/NOLOGO: 取消顯示啟動著作權標誌

/SUBSYSTEM:指定子系統,在PC傳統型程式上一般是兩個選項:console(控制台程式)和WINDOWS(非控制台程式)。

/out: 指定輸出的檔案。

link最後的參數是需要連結的obj檔案和庫檔案。

 

clean下面的@-if指令可以這麼寫:-if,其運行結果是一樣的,但是有命令的回顯。另外直接寫成:if,也可以執行。

(轉)nmake學習筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.