編譯Notepad2文法高亮記事本源碼心得

來源:互聯網
上載者:User

     很早就用上了Notepad2這個支援文法高亮的記事本,不過是以前很早的版本且被人漢化了。之後,發現了help功能表列關於Notepad2的官方網站,收穫不少。竟然開源,看樣子國外的開源精神不得不佩服!網址告訴大家:http://www.flos-freeware.ch/notepad2.html

裡面現在最新版的是Notepad2 4.1.24   ,包括了源碼。

效果如下:

 

     於是來了興緻,看自己能不能編譯,裡面的一個Notepad2.sln工程檔案肯定垃圾,面對如此複雜的依賴關係很難編譯,何況之後發現少了個很重要的源碼檔案,我想僅憑這個工程檔案是很難成功的。可巧,發現wdkbuild檔案夾中有個命令列檔案,這下好了,各源檔案之間的依賴關係變的清晰可見了。

@echo off</p><p>rem set WDKBASEDIR=C:/WinDDK/7600.16385.1<br />set WDKBASEDIR=D:/Programme/Microsoft wdk7</p><p>set INCLUDE=%WDKBASEDIR%/inc/crt;%WDKBASEDIR%/inc/api;%WDKBASEDIR%/inc/api/crt/stl60;%WDKBASEDIR%/inc/ddk<br />set LIB=%WDKBASEDIR%/lib/crt/i386;%WDKBASEDIR%/lib/win7/i386<br />set LIBPATH=<br />set VSCOMNTOOLS=</p><p>md "../Release"<br />del "../Release/*.obj"<br />del "../Release/*.exe"<br />del "../Release/*.pdb"<br />del "../Release/*.idb"</p><p>"%WDKBASEDIR%/bin/x86/x86/cl.exe" @cl.txt<br />"%WDKBASEDIR%/bin/x86/rc.exe" /fo"../Release/Notepad2.res" "../src/Notepad2.rc"<br />"%WDKBASEDIR%/bin/x86/x86/link.exe" @link.txt<br />

 

 

看了一下,用的是WinDDK驅動開發包,還是新版的DDK7.1,只好安裝了。從這個可以看出這個很重要的東西來,不然用VS編譯可就麻煩大了,嘿嘿。

且往下看,有兩個文字檔的引用,看cl.txt的前幾句

 

/Fo"../Release/" /I "../scintilla/include" /I "../scintilla/src" /I "../scintilla/win32" /D "STATIC_BUILD" /D "SCI_LEXER" /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /c /EHsc /GF /MD /O1 /Os /W3
/Tp "../scintilla/win32/PlatWin.cxx"
/Tp "../scintilla/win32/ScintillaWin.cxx"
/Tp "../scintilla/src/AutoComplete.cxx"

...........

發現有個很重要的檔案夾scintilla,怎麼沒有這個檔案夾呢?網上搜了一下,發現是一個很出名的文法高亮包,其中Notepad2就用到了這個包(該網站http://www.scintilla.org/上也有說明)。

於是下載下來,將scintilla檔案夾複製到與wdkbuil同級的檔案夾下,點build.cmd批處理運行(可以在裡面加一些pause暫停一下,以免一閃瑞而過,比如在cl行後加了pause,在link行後再加個pause)。

出現了好多問題,主要從Edit.c(1867):error C2001:newline in constant 錯誤開始(警告就先不管了)。

開啟檔案看了看,StrChr(L"'?,pszTextW[i])這句可能有問題,管它呢,改一下:StrChr(L"",pszTextW[i])  嗯,這下子好了,只有幾個警告對產生可執行檔問題不大,以後再改。

再按一下,執行link。

這下子,問題更多了,細看主要是關於KeyWords.obj的,可能是KeyWords.cxx中有些通不過,嗯是這樣子的。沒辦法只好又把KeyWords.cxx檔案的從第333行開始到427行結束的LINK_LEXER(***),給註譯掉。

總算編譯成功了,運行了下Notepad2.exe OK,且不說有BUG,至少程式已經在你的掌控之內,再進行必要的修改也不成問題了。

 

 

 

 

 

 

相關文章

聯繫我們

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