天天看點

Windows環境下編譯Notepad++.exe

今天想起來文法高亮的問題,這個在Notepad++裡面做的不錯,是以就像從源代碼中提取一部分作為自己的工程使用。 Notepad++官網:  http://notepad-plus-plus.org/  截至到現在,我下載下傳的是npp.5.9.6.2的版本:  http://notepad-plus-plus.org/download/v5.9.6.2.html ,這裡面帶有源代碼的下載下傳。

打開有有個ReadMeFirest的文本文檔,這是裡面提供的部分關于編譯的說明: There should be several ways to generate Notepad++ binaries, here we show you only the way with which Notepad++ official releases are generated. * notepad++.exe: Visual Studio 2005 * SciLexer.dll: Visual Studio 2005 (with nmake)

Notepad++ Unicode release binary (notepad++.exe) and Scintilla release binary (SciLexer.dll) will be built in the directories "notepad++\trunk\PowerEditor\bin" and "notepad++\trunk\scintilla\bin" respectively. You have to copy SciLexer.dll in "notepad++\PowerEditor\bin" in order to launch notepad++.exe    簡單說就是要編譯notepda++.exe和SciLexer.dll這兩個檔案,而根據後面的說明,要把Scilexer.dll拷貝到Notepad++的目錄,是以最好是先編譯這個dll檔案 打開檔案夾scintilla,用記事本打開裡面的ReadMe檔案,這是裡面關于編譯的部分 To build Scintilla, make in the scintilla/win32 directory cd scintilla\win32 GCC: mingw32-make VS .NET: nmake -f scintilla.mak cd ..\.. 這個dll檔案的編譯沒有提供IDE的工程檔案,是以隻能指令行編譯了,就是按照上面的提示,先打開vs2005的指令行,然後進入到scintilla\win32目錄,輸入nmake -f scintilla.mak 開始編譯,一般來說,這個編譯是沒有問題的。編譯完成後就可以在scintilla\bin目錄下找到一個名為SciLexer的dll檔案,這個就是一會運作的時候要拷貝的檔案了。

然後編譯notepad++.exe,這個提供了IDE的工程檔案,所在目錄是PowerEditor\visual.net,輕按兩下打開那個字尾名為vcprojec檔案,就可以打開工程檔案了,但是編譯的時候可能會出現一些錯誤,我這裡出現的是這個錯誤: 警告被視為錯誤---沒有生成“object”對象,為什麼會出現這個問題我也不太清楚,不過有的說是 原因是該檔案的代碼頁為英文,而我們系統中的代碼頁為中文, 是以就出現了,改的方法就是打開工程屬性----配置屬性----c/c++---正常,把警告視為錯誤這項設定為否,然後編譯,這個時候還有很多的警告資訊,不過無關緊要,是因為沒有使用安全的函數,vs裡面所謂的安全函數就是在一般的c函數後面加上了_s字尾,比如printf的安全函數就是printf_s,但是這麼多的警告看起來也很心煩,去掉的話可以根據提示定義 _CRT_SECURE_NO_DEPRECATE這個宏,而定義的位置則是precompiledHeaders.h這個頭檔案,看名字就知道了 是預編譯的頭檔案,相當于常見的stdafx.h,在包含都檔案的最上面加入#define _CRT_SECURE_NO_DEPRECATE就可以了,記住一定要是在包含頭檔案之前,要不然沒效果的。

PS:這裡說的編譯是指編譯Release版本的,Debug版本的則麻煩很多,除了上面的修改之外,還要添加很多很多的頭檔案目錄

C++中“XXX”被聲明為否決的什麼意思?

vs認為你的xxx是不安全的
加個編譯選項就可以了。于是按 Alt+F7打開項目屬性,點選“capturedata屬性”,找到“配置屬性” -> “C/C++” -> “指令行”,在右側的“附加選項”文本編輯框裡加入 【/D "_CRT_SECURE_NO_DEPRECATE" 】(注意加入的是【】符号裡面的文本),點确定。再次編譯,就沒有這種警告了。