Menu

Compile

develop (84)
Moca aroka novice123

開発に参加したい方へ>ソースコードのコンパイル

ソースコードのコンパイル Ver1.x.x.x(ANSI版)

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

  1. MS Visual C++ 6.0とMicrosoft Platform SDK(February 2003 Edition)
  2. MS Visual Studio.NET (or 2003, 2005, 2008, 2010)
  3. MS Visual C++ Toolkit 2003とWindows Server 2003 SP1 Platform SDK
  4. MS Visual C++ 2005 Express EditionとWindows Server 2003 SP1 Platform SDK
  5. MS Visual C++ 2008 Express Edition
  6. MS Visual C++ 2010 Express
  7. Borland C++ Compiler 5.5.1 (C++ Builder含む)とWindows Server 2003 SP1 Platform SDK
  8. CodeGear Turbo C++ (Explorer Edition)
  9. MinGWとMicrosoft Platform SDK(February 2003 Edition)

注意:

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

Microsoft Platform SDK(February 2003 Edition)に含まれているNewApis.hのバグを修正しないとコンパイルエラーとなります.関数 Probe_GetLongPathName()において

[誤]

BOOL (CALLBACK *RealGetLongPathName)(LPCTSTR, LPTSTR, DWORD);

[正]

DWORD (CALLBACK *RealGetLongPathName)(LPCTSTR, LPTSTR, DWORD);

Visual Studio .NET (or 2003, 2005, 2008, 2010)を使う

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++ 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 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とは異なりますので,コマンドラインでコンパイルする場合には付属のバッチファイルを修正する必要があります.

Visual C++ 2008 Express Edition

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

Visual C++ 2010 Express

Visual C++ 2008で変換し、再度Visual C++ 2010で変換します。

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の過程で自動的にコンパイルされて使われます.

CodeGear Turbo C++ (Explorer Edition)

sakura/ilink32.cfg.TurboC を ilink32.cfg としてコピーします.Turbo C++を標準以外のディレクトリにインストールしている場合はファイルの中に記述されているパスを修正してください.

その後sakuraディレクトリで

make CC=bcc32

でコンパイルできます.(CC=bcc32は省略できません)

MinGW

http://sourceforge.net/p/sakura-editor/patches/614/

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

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

ソースコードのコンパイル Ver2.x.x.x(Unicode版)

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

  1. MS Visual Studio.NET 2003
  2. MS Visual Studio 2005 (or 2008, 2010)
  3. MS Visual C++ 2005 Express EditionとWindows Server 2003 SP1 Platform SDK
  4. MS Visual C++ 2008 Express Edition
  5. MS Visual C++ 2010 Express
  6. MinGWとMicrosoft Platform SDK(v6.0A)

Visual Studio.NET 2003

sakura/sakura_2003.slnを開いてください.
[r3711]でコンパイルできることを確認しています。

Visual Studio 2005 (or 2008, 2010)

sakura/sakura.slnを開いてください.

Visual C++ 2005 Express Edition

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

Visual C++ 2008 Express Edition

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

Visual C++ 2010 Express

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

MinGW

mingw-get-inst-20120426.exe (gccは4.7.2)または
mingw-get-inst-20100831.exe(gccは4.5.0)等を使用してください.
*4.5.0 では[r3079]時点だとエラーになります.

C:\MinGW\includeにMS SDKから

ActivScp.h
ShlDisp.h (上書き)
htmlhelp.h
Rpcsal.h
vsstyle.h(r3124-r3134の間のみ)

をコピーして、ShlDisp.h/ActivScp.hの先頭に

#include "Rpcsal.h"

を加えてください.

SDK v7.0以降のhtmlhelp.hの場合には、in_opt, inを削除してください.

コマンドプロンプト(cmd.exe)またはMinGW Shellで、Mingw\binとmsys\1.0\binにパスが通っていればコンパイルができます.
sakura_core ディレクトリに移動し

make

でコンパイルできます.
編集して修正を加えるような場合は、 make depend を実行して依存関係を定義してください.

参考リンク

- VC6のこと

- VC8でWin95動作可能にする


Related

Commit: [r3079]
Commit: [r3711]
Wiki: Introduction
Wiki: Join

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.