天天看點

使用ultraedit和cl編譯器打造簡易c/c++開發環境

在visual c++下,每編寫一個簡單的小程式,就得生成一大串中間檔案,另人十分的不爽。下面提供一個新的編寫c/c++程式的方法:

  (1),下載下傳utraledit-32編輯器,推薦v11.

  (2),在utraledit-32中,分别點選菜單:進階-工具配置,出現一個dialog,用來設定使用者自定義的菜單項。我們的想法是,設定一個編譯菜單和運作菜單項,分别用來編譯在utraledit-32編寫的c/c++源檔案。這樣,在utraledit-32中編寫好程式後,點選這兩個菜單,就可以編譯程式,和運作程式。運作的結果在utraledit-32的輸出框中顯示。具體的設定如下。

  編譯:

  1,在指令行中填入:cl %n%e    我們知道,dos下的cl指令用來編譯源檔案。後面的兩個參數%n%e表示要編譯的源檔案的檔案名。(注意每個字母必須是小寫的,以下同)

  2,在工作目錄中填入:%p

  3,在菜單項目名中填寫 編譯,這個名字就是我們要設定的編譯菜單項的名字。

  4,對于下面的幾個複選框,選中輸出到清單框和捕獲輸出。

  5,點選 插入 按鈕,建立編譯菜單項

  運作:

  1,在指令行中填入:%n

  2,在工作目錄中填入:%p

  3,在菜單項目名中填寫 運作,這個名字就是我們要設定的運作菜單項的名字。

  4,對于下面的幾個複選框,選中輸出到清單框和捕獲輸出。

  5,點選 插入 按鈕,建立運作菜單項

  點選确定退出

  這樣,在 進階(A) 菜單下面可以看到出現了兩個新的菜單:編譯和運作

  這樣,當寫好源程式後,點選工具編譯和運作菜單,就可以編譯和運作程式。最終生成。obj檔案和。exe檔案。這樣的做法,比起使用vc要生成一大堆檔案,而且要為每一個程式建立一個檔案夾,是不是更加的友善呢?

  (3),為編譯和運作菜單設定快捷健:

  utraledit-32是一個強大的編輯器,可以使使用者自己定義各個菜單的快捷健。具體的做法如下:

  點選菜單:進階-配置,再選中鍵映射這一欄,可以看到所有的菜單項對應的快捷健,當然也包括我們剛才生成的兩個菜單,如果覺得這兩個菜單的快捷鍵用得不爽的話,可以自己設定。更詳細的做法就不說啦。

  (4)原理:說了這麼多,其實上面用到的是cl指令和utraledit-32提供的一些接口。我們知道,在dos下,可以用cl指令來編譯c/c++程式(當然估計沒人有會真的這麼做)。而utraledit-32提供了一個接口,可以建立菜單項,通過點選菜單項來執行dos下的指令。需要考慮的是,dos下的cl指令要求提供源檔案的檔案名作為參數,這個參數,在utraledit-32用%n%e來代替。當然,也可以為%N%E,但推薦使用小寫,大小寫的差別請看utraledit-32的幫助文檔。

  8-7:補充:如果要編譯連結生成DLL檔案,把編譯指令改為:    cl %n%e   /LD ,需要說明的是,生成exe檔案的指令和生成dll檔案的指令不能互相換用,是以,如果在utraledit下經常性地開發dll程式的話,還得再建立個編譯dll檔案得菜單為好,這樣就避免了編譯兩種檔案的時候改來改去。

附:如何在上述環境下編寫win32 GUI程式:

上面的程式設計環境與使用者是通過DOS控制台進行,但有時候覺得console too simple& naive啦,是以,想用些按鈕,編輯框換換,但用VC又有上文所述的種種不爽。幸好,在程式前面加上如下代碼,就可以用自己打造的簡易環境來開發GUI了。

#pragma comment(linker,"/subsystem:windows")

#pragma comment(lib,"user32.lib")

#pragma comment(lib,"gdi32.lib")

說明:第一行指連結程式時按照/subsystem:windows格式進行連結。我們知道,在VC中,對于應用程式有兩種連結方式,一種是/subsystem:console,當用這種方式連結時,程式與使用者互動将通過console進行。另一種就是上面的/subsystem:windows,這種情況下,程式與使用者互動通過程式中的GUI進行。

僅僅指定上述連結格式還不夠,因為GUI函數,如MessageBox,TextOut等,是放在user32.lib和gdi32.lib中的,但是直接用cl指令編譯,并不會連結到這兩個lib。是以,必須在程式前面加上第二行和第三行,才能進行GUI的開發。

另附:

#pragma comment( comment-type [,"commentstring"] )

  comment-type是一個預定義的辨別符,指定注釋的類型,應該是compiler,exestr,lib,linker之一。

  commentstring是一個提供為comment-type提供附加資訊的字元串。

  注釋類型:

  1、compiler:

  放置編譯器的版本或者名字到一個對象檔案,該選項是被linker忽略的。

  2、exestr:

  在以後的版本将被取消。

  3、lib:

  放置一個庫搜尋記錄到對象檔案中,這個類型應該是和commentstring(指定你要Linker搜尋的lib的名稱和路徑)這個庫的名字放在Object檔案的預設庫搜尋記錄的後面,linker搜尋這個這個庫就像你在指令行輸入這個指令一樣。你可以在一個源檔案中設定多個庫記錄,它們在object檔案中的順序和在源檔案中的順序一樣。如果預設庫和附加庫的次序是需要差別的,使用Z編譯開關是防止預設庫放到object子產品。

  4、linker:

  指定一個連接配接選項,這樣就不用在指令行輸入或者在開發環境中設定了。

另附:

  利用vc 6.0目錄下的cl.exe直接編譯程式的方法[整理]

  這是解決上面設定中,如果安裝VC的時候沒有設定環境變量的時候出現“cl不是内部或外部指令~~~”的方法

  copy from : http://dev.csdn.net/author/kgdiwss/03f945afa2844c3c84355a3bf2a72a65.html

  1.在“我的電腦——屬性——進階——環境變量”中, 添加如下變量:

  INCLUDE

  D:/Program Files/Microsoft Visual Studio/VC98/Include

  LIB

  D:/Program Files/Microsoft Visual Studio/VC98/Lib

  PATH

  X:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;X:/Program Files/Microsoft Visual Studio/VC98/Bin

  X表示安裝盤符,注意這裡是兩個路徑,因為cl.exe要用到MSDev98/Bin目錄下的MSPDB60.DLL.

  如果已經存在這些變量,則把以上值分别加在對應的變量值的後面,注意在添加前用分号隔開。

  2.重新開機電腦

  3.打開指令提示符,輸入:

  cl hello.c

  回車後就會在目錄下生成hello.exe和hello.obj.

附:

CL.exe 是控制 Microsoft C 和 C++ 編譯器與連結器的 32 位工具。編譯器産生通用對象檔案格式 (COFF)

對象 (.obj) 檔案。連結器産生可執行檔案 (.exe) 或動态連結庫檔案 (DLL)。

注意,所有編譯器選項都區分大小寫。

用法如下:

CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]

option : 一個或多個 CL 選項。請注意,所有選項都應用于所有指定的源檔案。選項是由一個

正斜杠 (/) 或一個短劃線 (-) 指定的。如果某個選項帶有參數,則該選項的說明指

定在選項和參數之間是否允許有空格。選項名(/HELP 選項除外)區分大小寫。