2006-6-24
小敘
之前寫(xiě)很小的程序的時(shí)候,幾個(gè)源文件和編譯后的class文件統(tǒng)一都放在同一個(gè)目錄之下,倒也相安無(wú)事而且省事。但是在做畢設(shè)(坦克對(duì)戰(zhàn)游戲)的時(shí)候,多則二十個(gè)的源文件,再連同那些class文件都放在一個(gè)目錄下,顯得非常的雜亂。于是覺(jué)得是時(shí)候考慮一下一個(gè)project的目錄結(jié)構(gòu)了,例如把源文件和class文件分開(kāi),把測(cè)試文件也統(tǒng)一在另一個(gè)獨(dú)立的目錄下。
回顧和插曲
之前用C語(yǔ)言程序?qū)W習(xí)編寫(xiě)小的編譯器的時(shí)候,我就曾不解怎么把一個(gè)程序分為幾個(gè)獨(dú)立的文件。那時(shí)的做法很傻但簡(jiǎn)單,就是盡量不用.h頭文件,只使用.c文件,然后一層一層的include。后來(lái)看《The C Programming Language》第四章head files,才較為清楚地知道了怎樣通過(guò).h文件來(lái)把一個(gè)程序分割為幾個(gè)小的源代碼文件。
這里有一個(gè)小的插曲,在3月末的研究生復(fù)式中,其中一道編程題是實(shí)現(xiàn)stack數(shù)據(jù)結(jié)構(gòu),提供push,pop和get的函數(shù)實(shí)現(xiàn),并提供一到兩個(gè)測(cè)試?yán)印N沂怯肅實(shí)現(xiàn)的,在實(shí)現(xiàn)過(guò)程中分為了三個(gè)文件,其中兩個(gè).c文件和一個(gè).h文件。分別是main.c stack.c and stack.h。
stack.h:定義了main.c and stack.c公用的stack struct變量,以及對(duì)main.c將需要用到的和在stack.c里由于函數(shù)定義順序的關(guān)系需要到的函數(shù)進(jìn)行了聲明(區(qū)別于定義)。
stack.c:include “stack.h”,定義了一系列函數(shù),可以為其它文件中所調(diào)用(這也是為什么這當(dāng)中的一些函數(shù)需要在stack.h中聲明的原因)。
main.c:include “stack.h”,使用到了stack.c中的函數(shù),也就是執(zhí)行了兩個(gè)測(cè)試?yán)佣选?BR>stack的具體操作實(shí)現(xiàn)細(xì)節(jié)這個(gè)略過(guò)了。考試的結(jié)果得了A,想必這種源代碼文件的組合關(guān)系也另評(píng)分的老師覺(jué)得清晰和有序:-)
原則
這方面的工具(build tool: 名字是構(gòu)建工具)最流行的好像是ant,在看《Developing Games in Java》的時(shí)候,作者也是通過(guò)提供build.xml給ant來(lái)完成相應(yīng)的工作,于是我嘗試把build.xml看明白了之后,第一印象就是它可以很好的處理一個(gè)project的各種文件的目錄結(jié)構(gòu):-),第二印象是又得使用不熟悉的工具了:-(。我覺(jué)得自己很懶,懶在不想學(xué)一些可能使用不多或不大有用的工具,同時(shí)覺(jué)得怕,怕在于這個(gè)ant是人家的,我害怕一個(gè)東西以我不清楚的方法和細(xì)節(jié)完成工作。這涉及一個(gè)學(xué)習(xí)新工具時(shí)候的原則問(wèn)題:一,它好用嗎,可以meet my need嗎;二,它是怎么完成的啊,我想“看”清楚它的做法;三,夠簡(jiǎn)單嗎。
ant是一個(gè)現(xiàn)成的魔術(shù),而我希望自己可以使用現(xiàn)掌握的簡(jiǎn)單的知識(shí)做一個(gè)最簡(jiǎn)單的而且合乎我要求的魔術(shù),而最要緊的是我知道它到底做了什么,它是怎么做了。
工作
現(xiàn)在我有必要自己來(lái)完成兩件事情:一:明確在一個(gè)project目錄下有什么目錄;二,我怎么實(shí)現(xiàn)把各種文件(如.java, .class, .jar, .html)存放到相應(yīng)的目錄并且讓它們和調(diào)的協(xié)作呢?我現(xiàn)在只懂編譯時(shí)候的-d參數(shù)和運(yùn)行時(shí)候的-cp參數(shù)。
(1)
嘗試學(xué)習(xí)ant的最簡(jiǎn)的使用方法,記錄在"mynotes about ant -ant的最簡(jiǎn)單使用方法.txt"文件中。
(2)
下面嘗試自己來(lái)構(gòu)建目錄結(jié)構(gòu),而不使用ant。記錄在"2006-06-24build project.doc"文件中。
----------------------------
附錄一:bat批處理文件中常用的命令
date /t
time /t
mkdir or md
del /Q or earse /Q
rmdir or rd
echo
@echo off
rem
pause
date /t > a.txt | type a.txt //間接地建立一個(gè)a.txt文件并把文件的內(nèi)容顯示出來(lái)