2011年8月19日 星期五

用mingw(gcc)來製作harbour + hwgui utf8版 之不死心再來一次

用mingw(gcc)來製作harbour + hwgui utf8版
(到底試幾次了? 你的肝站在你後面,它不火了但燒到剩灰盡了....)
2011-08-19 0:31開始記錄
d:\s
d:\s\g mingw完全安裝 (這次先不裝qt lib看看)
d:\s\h harbour svn checkout
d:\s\u hwgui svn checkout

**** 這是harbour ****
d:\s\h>set path=d:\s\g\bin
d:\s\h>win-make
竟然成功做成86 lib(.a), 10個bin/dll(.exe/.dll) 那我之前qt是灌心酸的哦

記得copy
d:\s\h>copy bin\win\mingw bin
d:\s\h>copy lib\win\mingw lib

**** 這是hwgui ****
d:\s\h>cd \s\u
d:\s\u>
記得copy 三個檔 source\ hedit.prg unicode.c misc.c
(自己去 www4.zzz.com.tw 找)
但我不想破壞svn後的內容,以後再用追加obj的方式另外處理吧
以下,要修改的檔案都另存新檔名,以免破壞svn的完整性
copy makefile.gcc makegcc.jc
加入 -DUNICODE
----------------------------------
CFLAGS = -DUNICODE -Wall -mno-cygwin -O3 -march=pentium -DHWG_USE_POINTER_ITEM
----------------------------------
copy makemngw.bat makejc.bat
最前面加入以下二行
if not exist lib md lib
if not exist obj md obj
修改
mingw32-make.exe -f makejc.gcc
記得設HB_PATH(全部大寫)
d:\s\u>SET HB_PATH=d:\s\h
d:\s\u>makejc
等待完成 4個lib檔(.a)
接下來,在ROTT下,複制三檔作obj(.o) hedit.prg unicode.c misc.c
misc.c太舊,裡面的ISNIL要換成HB_ISNIL, ISPOINTER要換成HB_ISPOINTER
d:\s\u>set path=d:\s\g\bin;d:\s\h\bin
d:\s\u>harbour -i\s\h\include;\s\u\include n hedit
d:\s\u>gcc -DUNICODE -Wall -mno-cygwin -O3 -march=pentium -DHWG_USE_POINTER_ITEM -I\s\u\include -I\s\h\include -c hedit.c -olib\hedit.o
d:\s\u>gcc -DUNICODE -Wall -mno-cygwin -O3 -march=pentium -DHWG_USE_POINTER_ITEM -I\s\u\include -I\s\h\include -c unicode.c -olib\unicode.o
d:\s\u>gcc -DUNICODE -Wall -mno-cygwin -O3 -march=pentium -DHWG_USE_POINTER_ITEM -I\s\u\include -I\s\h\include -c misc.c -olib\misc.o

**** hwgui make完成,開始測試前的準備動作 ****
接下來重頭戲,到samples去測試了
d:\s\u>cd samples
一樣為了保持svn完整性,複制複制
d:\s\u>cd samples
d:\s\u\samples>copy bldgw.bat bldjc.bat
並修正如下:
set path=d:\s\g\bin
set MINGW=d:\s\g
set HRB_DIR=d:\s\h
set HWGUI_INSTALL=d:\s\u
@set OBJ_LIST=%1.o \s\u\lib\misc.o \s\u\lib\unicode.o \s\u\lib\hedit.o(gcc 那行最扯hb 3.1版都很久了。都不更新lib檔名)
(註:這裡不需要加-DUNICODE)
gcc -Wall -mwindows -o%1.exe %OBJ_LIST% -L%MINGW%\lib -L%HRB_DIR%\lib -L%HWGUI_INSTALL%\lib -mno-cygwin -Wl,--allow-multiple-definition -Wl,--start-group -lhwgui -lprocmisc -lhbxml -lhbvm -lhbrdd -lhbmacro -lhbpp -lhbrtl -lhbcpage -lhblang -lhbcommon -lhbnulrdd -lrddntx -lrddcdx -lrddfpt -lhbsix -lgtgui -lgtwin -luser32 -lwinspool -lcomctl32 -lcomdlg32 -lgdi32 -lole32 -loleaut32 -luuid -Wl,--end-group
最前面加2行,最後面加2行(純為個人習慣)
if exist %1.exe del %1.exe
if exist %1.exe goto end

if exist %1.exe %1.exe
:end

**** 測試開始 (以下請都用 samples\bldjc.bat ,不要用各目錄的bld.bat )
d:\s\u\samples>cd hello
d:\s\u\samples\hello>copy hello.prg h.prg
d:\s\u\samples\hello>..\bldjc h
h.exe 完成後自動執行。
RichText/EditBox輸入中文也沒問題。連沒裝unicode補完也能輸入unicode
但值是什麼呢???
Get 卻連中文都不行
EditBox 可ansi-big5中文,不能unicode
加不加三個修正檔都一樣

沒有留言: