以往Linux總帶給人深不可測的印象,並且會讓人覺得在這樣的作業系統上執行應用程式或是開發軟體,似乎都不是非常簡單的任務。畢竟大多數人一開始接觸電腦所使用的作業系統都是微軟的產品,恐怕一看到Linux的視窗執行介面與Windows大不相同,便已經感到吃力,更不用說要面對Linux的文字命令列模式。除非使用者能打定主意要學好Linux,否則很難在短時間內立即上手,甚至運用自如。
雖然目前大多數的Linux發行版本都以親和力高、容易上手的圖形使用者介面作為主要操作介面,對於Linux的入門門檻而言已經降低不少,但如果需要在Linux系統上開發應用程式,則又必須面對沒有易於使用的開發環境的老問題。
許多UNIX/Linux的老手相當習慣以vi編輯程式,再使用gcc進行編譯。但對於剛踏入Linux這個複雜的世界、或是對於撰寫程式語言還不是十分熟悉的新手而言,這樣的步驟都顯得有些麻煩,也增加了入門的難度。尤其是近幾年來嵌入式系統的流行,更帶動了業界在Linux系統上開發軟體的需求,也讓許多程式開發人員面臨需要重新熟悉一套作業系統和開發環境的情況。
許多工程師在學校學的可能是VB、VC或其他有視覺化圖形介面的開發軟體,但在Linux系統上這樣的開發環境並不多見,甚至予人一種「Linux並沒有好用開發軟體」的印象。也許有些工程師曾經因為工作上的需求使用過Linux開發軟體,但如果針對這些工程師進行調查,很可能還是會得到「我最習慣的開發環境是VB/VC」這種回答。
難道在Linux系統上真的沒有方便好用的軟體開發環境嗎?Linux的程式設計師永遠只能先跟vi大戰三百回合,再與gcc奮戰數起才能完成程式開發的需求?早期在Linux剛開始發展時,情況可能真的是如此,但經過這些年來,在許多有心人士的大力推動之下,Linux早已出現許多適合從初學者到程式設計老手的開發環境,而且每一套系統都各有特色。本文所要介紹的KDevelop,就是一套親和力相當高,支援功能廣泛的程式開發環境,足以作為在Linux系統上開發軟體的主力系統。
|
▲KDevelop的操作畫面 |
KDevelop簡介
KDevelop是一套可以用來開發GNU標準應用軟體的整合開發環境(Integrated Development Environment,IDE),也是對想在Linux系統上開發應用程式的初學者而言非常容易上手的一套開發環境。
KDevelop從1998年開始發展,一開始是針對KDE視窗管理介面的軟體開發用途所設計的開發環境,但經過多年的開發與擴充,目前KDevelop已經可以支援多種不同的視窗管理介面或是軟體開發平台,如KDE3、KDE4、Qt3、Qt4與GNOME等等。但KDevelop並不是只能使用在視窗軟體的開發用途上,對於一般的文字終端機介面所執行的程式,KDevelop也都能支援。
而在程式語言的支援上,目前不但可以支援最為廣泛的C/C++程式語言,也能夠處理其他常見的程式語言,例如Java、Pascal、Perl、PHP、Python、Ruby、Fortran、Ada等等。即使是像Bash的Shell Script或是SQL查詢語言,KDevelop也都能處理,算是支援語言相當多元化的一套開發環境。
|
▲KDevelop支援許多常見的程式語言,例如C++ |
與時下流行的開發環境類似的是,在使用KDevelop開發軟體時,可以先使用應用程式精靈(Application Wizard)進行初步架構的建立,甚至也可以使用類別精靈建立所需要的類別。當然類別精靈只有在支援物件類別的程式語言中才能使用,像Pascal、Perl這種無法建立物件類別的程式語言,自然無法享受這項功能所帶來的好處。
此外,KDevelop也提供了完整的專案管理功能,在開發大型軟體時對於專案的細部內容掌握將會有所提升。而KDevelop所內建的編輯器也支援文法標示功能,可以幫助使用者在撰寫程式時,更容易發現打字上的錯誤。至於其他開發環境通常都會支援的程式碼補齊、內建除錯程式、類別瀏覽器與線上輔助系統等常見功能,KDevelop自然也不會遺漏。
支援外掛的結構
雖然在一般人的認知之下,軟體開發環境並不需要進行太多功能上的擴充,即使有此需要,通常也是透過軟體改版的過程來進行。但KDevelop為了保有系統功能方面的彈性,提供了以外掛程式為基底的結構,如此一來使用者在必要時便可以非常輕易地為KDevelop新增各種功能,也可以將現有功能進行升級或是直接移除不再需要的舊功能。而這樣動作完全不必修改系統本身的核心程式碼,在複雜度方面降低許多不必要的麻煩。
如果採用KDevelop的使用者認為自己所開發的外掛程式十分好用,想要將這些外掛程式分享給其他同樣採用KDevelop的使用者,甚至是以商業版本的方式在市面上販售,KDevelop原則上都同意在符合LGPL(Libraries GPL)的原則下進行這樣的動作。此外,KDevelop也支援以設定檔(Profile)的方式一次將數個不同的外掛程式全數載入,在特定環境下這樣的功能可說是相當方便好用,減少許多安裝時間上的浪費。
專案管理
現今,開發大型的軟體程式已經不可能以少數幾個檔案就完成所有功能,儘管在程式設計上這樣的做法並不是不可能完成整套系統,但在事後的維護工作上將會付出相當多的代價。為了避免辛苦開發的程式因為維護不易而慘遭淘汰,或是遇上客戶抱怨除錯過程越拉越長的情況,在軟體剛開始開發時,便應該以專案的概念進行原始碼管理,才不容易出現這些問題。
在UNIX/Linux系統上以專案的概念進行程式開發,最重要的是將不同功能的原始碼放置於相異的檔案之中,再使用Makefile進行編譯。但由於Makefile的撰寫對初學者而言也是一道不小的難題,因此利用工具程式自動產生Makefile,也就成了所有程式設計師必要的技能之一。
KDevelop同時提供了automake與qmake這二套Makefile產生程式的支援,所以在開發系統的過程中,完全不需要擔心Makefile該如何撰寫的問題。如果要針對工具程式所產生的Makefile進行手動修正,KDevelop也可以自動辨識出這些變化,並且進行數個專案的編譯與執行檔的建立。
KDevelop的專案管理功能也可以輕易地將現有的專案檔案或子專案進行匯入動作,所以先前已開發過的專案若有需要,即可使用此功能將程式碼再次回收與利用。而對於Java專案而言,ant這套建置工具也被KDevelop直接支援,所以慣用Java的使用者毋須擔心建立新專案時沒有方便的工具可以使用。
如果需要在KDevelop新增任何建置系統的支援,可以開發建置系統的外掛程式,並利用KDevelop所提供的Framework將新功能增加至系統中。若需要在現有的專案中建立新檔案,則可以使用「建立新檔案」精靈功能進行檔案樣版的管理,再利用這些樣版進行建立新檔案的動作。
KDevelop目前的版本是3.x版,但仍然可以開啟先前2.x版的專案檔案。所以如果是之前曾經使用過KDevelop的舊版本,並以此軟體開發過系統的使用者,就不需要擔心會有舊程式需要重新建立新專案的狀況發生。
同時支援automake與qmkae的KDevelop,在這二套建置工具上也有不同的設定管理支援功能。例如在automake方面提供了在相同子目錄下同時產生不同目的檔的支援,也可以設定標頭檔引入目錄與連結程式的相關選項、針對不同環境編譯出彼此獨立的執行檔或是在子目錄中建立不同的檔案等功能。
在qmake方面則是可以解析與顯示Qt4建置系統的屬性內容,並在解析過程中不會修改專案檔案的內容。檔案處理上可以支援相對檔名,並支援檔案路徑中包含變數的處理功能等等。
|
▲KDevelop支援以專案管理方式開發軟體 |
除錯程式
由於大型軟體專案的開發越來越複雜,想要寫出一套完全沒有臭蟲的軟體系統已經被視為是不可能的任務。但客戶不可能接受系統開發者以這樣的理由直接將軟體有問題的事實加以掩蓋,所以如何在程式開發過程中或是系統釋出後進行除錯,也成了程式設計師必定要面對的課題。
KDevelop在除錯功能方面提供了GDB與Java除錯程式的前端介面,並且將GDB的主控畫面整合至系統中。使用者可以在原始碼中設定中斷點或是觀察點,以便在程式運行中觀察特定變數的變化,進而找出程式碼中有問題的段落。如果有必要的話,也可以使用反組譯程式檢查已編譯過的執行檔內容,或是查看堆疊的內容。
而像是記憶體、暫存器的檢視功能,變數檢視樹或是遠端除錯等功能,KDevelop的整合除錯功能也都支援。再加上KDevelop也提供了GDB輸出視窗的過濾功能、自動顯示變數內容視窗等功能,在除錯方面增加不少可用性,也減少了使用者在除錯時所浪費的時間。
程式碼編輯
基本上,任何編輯器只要支援KDE KTextEditor的介面,都能在KDevelop中作為程式編輯器使用,而目前KDevelop所使用的編輯器則是Kate。這套程式編輯器可以提供許多功能,例如允許使用者在整個專案中任意建立書籤點,並且會將這些書籤點儲存在專案檔案中。而目前正在編輯的檔案與存放於磁碟中的檔案會以不同的瀏覽視窗呈現,並支援補丁檔(Patch Files)的瀏覽功能。
|
▲KDevelop預設支援的編輯器為Kate |
此外,由於整合了grep指令的關係,使用者亦可使用正規表示法在整個專案中進行特定字串的搜尋。如果需要的是更進一步的搜尋並取代字串的功能,KDevelop也都提供了相關的功能。
版本控制系統
開發大型專案時,版本控制系統的支援也是不可或缺的重要選項之一。KDevelop提供了一套通用API以便在開發專案中提供版本控制系統的支援,而KDevelop所能支援的版本控制系統則包含了常見的CVS、Perforce、Subversion和Clearcase等等。
使用版本控制系統時,KDevelop在內容選單中提供了專案檔案與目錄的圖形介面支援,並且在編輯器中允許直接存取這些功能。在專案的樹狀顯示介面中,還會以不同的顏色區分版本控制系統的狀態。使用者也能夠直接在軟體庫中建立新專案,或是進行新增、移除檔案,更新現有檔案或檢視紀錄檔等動作。
|
▲KDevelop內建版本控制系統支援功能 |
應用程式精靈
應用程式精靈其實便是專案樣版,可以用來建立完整的一套應用程式,而且在執行過應用程式精靈後,所產生出來的專案其實已經是可以直接執行的應用程式樣本,只需要稍加修改就能成為符合個人需求的新系統。
應用程式精靈可以在任何KDevelop所支援的程式語言上使用,也可以針對不同的建置系統進行設定。KDevelop所提供的應用程式精靈中的樣版相當多元化,無論是KDE相關的專案樣版(例如KPart應用程式、KControl模組、Kicker元件、KOffice元件等等),或是GTK、GNOME的應用程式,都可以直接使用應用程式精靈進行初期開發。應用程式精靈所建立的新檔案都會以utf8編碼進行儲存,所以理論上使用者不會遇到任何編碼上的問題。
|
▲使用應用程式精靈可輕易建立應用程式,例如GTK程式庫所開發的視窗軟體) |
RAD工具
如果只是將KDevelop應用在文字介面程式的開發,似乎有點小看KDevelop的能耐。KDevelop提供了RAD的設計環境支援,所以如果擔心在Linux系統上開發視窗程式將是件艱難的任務,那多半是尚未嘗試過KDevelop的關係。
KDevelop的RAD設計環境可以讓使用者以拖曳的方式將視窗元件放置在畫面上,再針對不同的事件觸發流程撰寫相對應的程式碼,編譯執行後即可產生一套完整的圖形介面程式。如此簡易的開發流程,讓程式設計師在開發視窗環境的軟體時,也可以在最短的時間內完成工作。
|
▲KDevelop也提供以RAD環境開發視窗軟體的功能 |
結語
上述內容已經大略介紹KDevelop的主要功能與特色,但這並未涵蓋KDevelop所能提供的全部功能,也只是大致上的簡介,稱不上詳細說明。礙於篇幅的限制,本文無法將KDevelop的所有特色一一進行介紹,所以如果讀者想更進一步了解KDevelop的功能,最好的辦法還是自行安裝一套KDevelop,再一一嘗試細部功能。
KDevelop在Ubuntu的套件庫中已經先行內建,只需要執行「sudo apt-get install kdevelop」指令即可安裝完成。如果讀者所使用的Linux發行版本不是Ubuntu,下載KDevelop原始檔後再參考安裝文件內的詳細說明,也可以輕易完成安裝過程,並享受KDevelop所能帶來的好處。也許手動安裝KDevelop有點麻煩,但如果可以加速產品開發,或許花點時間研究一下安裝過程,也是十分值得的選擇。
KDevelop軟體小檔案 |
軟體版本:3.5.2
軟體性質:GNU General Public License (GPL)
使用限制:無
官方網址:http://www.kdevelop.org/
下載網址:http://download.kde.org/download,php? url=stable/apps/KDE3.x/ide/kdevelop-3.5.2.tar.bz2 (9.0MB) |
|