プロ ジェクトホーム >> トップページ >> 開発に参加したい方へ >> ソースコードのコンパイル

ソースコードのコンパイル

このページの最新版は以下の場所をご覧ください
http://sakura-editor.wiki.sourceforge.net/Compile

コンパイルには以下のうちのいずれかが必要です。

  1. MS Visual C++ 6.0とHTML Help Workshop 新 しいPlatform SDKに含まれるファイルを利用するため,これだけでは不十分です
  2. MS Visual C++ 6.0とMicrosoft Platform SDK
  3. MS Visual Studio.NET (or 2003, 2005)
  4. MS Visual C++ Toolkit 2003Microsoft Platform SDK
  5. MS Visual C++ .NET 2005 Express EditionMicrosoft Platform SDK
  6. Borland C++ Compiler 5.5.1 (C++ Builder含む)とMicrosoft Platform SDK
  7. MS Visual C++ .NET 2005 Express EditionMicrosoft Windows SDK

注意

Borland C++ 5.5 ではリソースのリンクがうまくできません。アップデートされていないC++ Builderでも同じです。

2001/7/4のRC4(1.2.99.3)からはHHCTRL.OCXを動的ロードするように変更したので,Borland C++使用時のライブラリ作成作業は必要ありません.

Visual C++ 6.0を使う

MS Visual C++ 6.0を使うときはsakura/sakura.dswをDeveloper Studioで開いてください。

htmlhelp.hを標準のヘッダファイルとは異なるディレクトリに置いている場合はインクルードファイルの読み込みパスを追加する 必要があります。

こちらではsakura_core.dllとsakura.exeの2つのファイルが生成されます。

Visual Studio .NET (2003, 2005含む)を使う

Visual C++ 6.0と同様にsakura/sakura.dswを開くとプロジェクトを新しい形式に変換するかどうか聞いてきますので, 「はい」を選択して開いてください.

VS .NETではプロジェクトファイル形式およびリソース編集結果がVC 6.0使用時と異なります.個人で編集する分にはそれでもかまわないのですが,パッチの提供をして頂く場合にはリソース編集やプロジェクトへのファイルの 追加・削除はVC 6.0の形式に合わせて(すみませんが手動で)編集してください.

プロジェクトファイルはVisual C++ 6.0のdsw/dsp形式で提供されていて,ソースファイルが追加になるとそれらも変更されます.しかし,一旦.slnに変換した後はdspが参照され ないため,ファイルが追加された場合は.slnを削除して再度dspより変換する必要があります.

Visual Studio .NET 2003に附属の(最新でない) SDKに含まれているNewApis.hのバグを修正しないとコンパイルエラーとなります.関数 Probe_GetLongPathName()において

[誤]
BOOL (CALLBACK *RealGetLongPathName)(LPCTSTR, LPTSTR, DWORD);
[正]
DWORD (CALLBACK *RealGetLongPathName)(LPCTSTR, LPTSTR, DWORD);

Visual C++ Toolkit 2003を使う

Visual C++ Toolkit 2003は特に選択肢がないので標準設定でインストールしてください.Platform SDKは32bit環境のツール,ヘッダ,ライブラリに加えてWin64環境用のツールをインストールしてください.(nmakeがWin64環境にしか 入っていないため).Win64用のツールはクロスコンパイルツールと思われますが,nmakeはそれ自身がバイナリを生成する物ではないのでWin32 用ソフトウェアでも使えます.

事前に環境変数PATH,INCLUDE,LIBを適切に設定する必要があります.Rev#954以降ではバッチファイルのひな形が sakura/Toolkit2003Env.bat.tmpl として入っていますので,必要に応じてパスを書き換えた上で拡張子をbatに変更してご利用ください.

PATH=%PATH%;C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft Platform SDK\Bin;C:\Program Files\Microsoft Platform SDK\Bin\win64

SET INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft Platform SDK\Include;C:\Program Files\Microsoft Platform SDK\Include\mfc;C:\Program Files\Microsoft Platform SDK\Include\crt

SET LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program Files\Microsoft Platform SDK\Lib

Rev#954以降ではBCC/VC共用Makefileになりました.
Toolkit2003Env.bat
nmake

依存関係が記述されていませんので,ヘッダファイルのみ修正してmakeすると不完全なファイ ルができてしまいます.申し訳ありませんがヘッダファイルを変更したときは,

nmake clean
nmake

ではじめからやり直してください.

Visual C++ .NET 2005 Express Editionを使う

基本的な使い方は通常のVisual Studioと同じですが,SDKが標準では入っていないため別途インストールする必要があります.

with Platform SDK

Plaform SDKの設定方法はMicrosoftに説明ページがありますが,手順3でInclude ファイルにはC:\Program Files\Microsoft Platform SDK\includeに加えてC:\Program Files\Microsoft Platform SDK\include\mfc及びC:\Program Files\Microsoft Platform SDK\Include\crtも追加してください.

設定が完了したらVisual Stuidio同様にプロジェクトファイルを変換後,ビルドを行ってください.

注意: VisualStudio .NET 2005で作られたバイナリは,Kernel32.dllのIsDebuggerPresent() を参照しにいくようになるため、Win95 では動作しなくなります.

with Microsoft Windows SDK for Vista

Microsoftから.NET 3.0を含むMicrosoft SDK for Vistaというものがリリースされています.Vista対応のAPIを使うためにはこれが必要なようです.

このSDKはWindows 95/98のことは考慮されていないようで,Platform SDKに入っている互換性維持のためのヘッダ(NewApi.h)が含まれていません.そのため一部ソースコードの修正が必要となります.(エラーになっ た#include文を削除するだけですが.) コンパイルしたバイナリは過去のウィンドウズでは動作しないものとなります.

また,ディレクトリ構成がPlatform SDKとは異なりますので,コマンドラインでコンパイルする場合には付属のバッチファイルを修正する必要があります.

Borland C++ Compiler (またはC++ Builder)を使う

新しいPlatform SDKのファイルが必要なため,bcc32.cfgのインクルードパスの最後

-I(bccの既存のinclude);"C:\Program Files\Microsoft Platform SDK\Include"

とPlatform SDKを加えてください.bccのincludeより前に記述するとコンパイルエラーとなりますので注意してください.

sakura ディレクトリにて

make -a

でコンパイルができます。sakura.exeという単一の実行ファイルが生成されます。最後の"-a"は依存関係を自動的に調べるオ プションで、Borland C++付属のmakeでのみ有効です。

リソースファイル(MS Visual Studioにて作成)をBorland C++のリソースコンパイラが理解できる形に修正するツールがbtoolディレクトリに含まれています.これはmakeの過程で自動的にコンパイルされて 使われます.

コンパイラの違いによる注意

toupperに2バイト文字を与えたときの振る舞いがVisual C++とBorland C++で異なります。この違いはstricmp, memicmpにも効いてきます。Borland C++はlocaleがJapaneseの場合に2バイト文字の一部に対するtoupperに0を返すため、そこで比較が終わってしまい期待する結果が得 られません。


[PR]人気!男性用ムダ毛撃退ジェル:剛毛お悩み解決!効果を実感してください