| 1 |
/*! |
| 2 |
\page vcprogen_page Visual Studio .NET 2003 の vcproj 生成ツール |
| 3 |
|
| 4 |
\section vcprogen_what_section 何をするのか |
| 5 |
|
| 6 |
Visual Studio .NET 2003 のプロジェクトファイルを生成するためのスクリプト。exe を出力するタイプのプロジェクトと、lib を生成するためのプロジェクトが生成できればよいとする。\n |
| 7 |
いちいち GUI でプロジェクト設定を行うのは面倒なのですよ...。 |
| 8 |
|
| 9 |
出力タイプ |
| 10 |
- exe ... *.cpp, *.h から exe ファイルを作るための vcproj を生成 |
| 11 |
- lib ... *.cpp, *.h, Makefile.am から配布用の include/, lib を生成 |
| 12 |
|
| 13 |
\n |
| 14 |
その他 |
| 15 |
- Debug, Release の両方の設定を出力 |
| 16 |
|
| 17 |
\n |
| 18 |
プロジェクトについての設定は、スクリプト実行時の引数、および設定ファイルにて指定するものとする。 |
| 19 |
|
| 20 |
<hr> |
| 21 |
|
| 22 |
\section vcprogen_imple_section 実装 |
| 23 |
|
| 24 |
exe と lib 用のどちらのプロジェクトを生成するかにより、特別に処理すべき内容が異なるので、それぞれの場合毎の実装を行う。このスクリプトが提供するのは、プロジェクトファイルの提供までであって、そのプロジェクト内のファイルを生成したりはしない。 |
| 25 |
|
| 26 |
\n |
| 27 |
\subsection vcprogen_exe_section exe ファイル生成用の処理 |
| 28 |
|
| 29 |
\b 実現したいこと |
| 30 |
- *.c, *.cpp を「ソースファイル」に設定 |
| 31 |
- *.h を「ヘッダファイル」に設定 |
| 32 |
- 追加のインクルードパスを設定 |
| 33 |
- 追加のライブラリを設定 |
| 34 |
- ライブラリの読み込みパスを設定 |
| 35 |
- 実行時のライブラリサーチパス(あるのか?)を設定 |
| 36 |
- 必要で、system に配置されていない DLL があった場合に、実行フォルダにコピー |
| 37 |
- GUID の設定を変更 |
| 38 |
|
| 39 |
くらいか?\n |
| 40 |
この程度であれば、XML の キー指定でタグ置換を行えばよさそう。ただし、Debug, Release の両方への設定が簡単に指定できることが望ましい。 |
| 41 |
|
| 42 |
\n |
| 43 |
\subsection vcprogen_lib_section exe ファイル生成用の処理 |
| 44 |
|
| 45 |
基本的には, exe と同じ事が実現できればよい。ただし、ライブラリ生成では、そのライブラリの include 用ファイルも生成できると便利なことがある。この生成を、Makefile.am から行えるようにする。同様に、ライブラリのソースコードの情報も Makefile.am から取得できるようにする。つまり、 |
| 46 |
|
| 47 |
- Makefile.am から |
| 48 |
- include/ に配置するファイル情報を取得 |
| 49 |
- コンパイルするファイル情報を取得 |
| 50 |
|
| 51 |
という感じ。ただし、Makefile.am 内で指定されている .h は必要だが、ソース情報は必要ない場合がある。従って、Makefile.am から何の情報を取り出すかは明確に区別する。 |
| 52 |
そんな感じ。 |
| 53 |
|
| 54 |
<hr> |
| 55 |
|
| 56 |
\section vcprogen_usage_section 実行方法 |
| 57 |
|
| 58 |
基本的には、置換すべき情報を格納したファイルを指定して処理を行う。ただし、Makefile.am は `find ...` のようにコマンドラインで渡した方が便利な場合があるので、渡せるようにする。従ってコマンド実行例としては、 |
| 59 |
|
| 60 |
\verbatim |
| 61 |
% ruby vcprogen.rb --name followLine --type exe --sources followLine.cpp |
| 62 |
% ruby vcprogen.rb --name vxv --type lib --codes `find . -name "Makefilea.am"` |
| 63 |
% ruby vcprogen.rb vxv_proj.txt --headers `find . -name "Makefile.am"` \ |
| 64 |
--sources `find . -name "Makefile.am" ! -path "*/c/*"` \endverbatim |
| 65 |
となる。 |
| 66 |
|
| 67 |
<hr> |
| 68 |
|
| 69 |
\section vcprogen_proj_section 実行例 |
| 70 |
|
| 71 |
vxv2 の Makefile.am から lib 生成用の vxv2.pcproj を作る例は以下の通り。 |
| 72 |
|
| 73 |
\verbatim |
| 74 |
% ruby vcprogen.rb --name vxv2 --type lib --mask "cpp,h" \ |
| 75 |
--headers "`find ${VXV2_PATH} -name "Makefile.am"`" \ |
| 76 |
--sources "`find ${VXV2_PATH} -name "Makefile.am" \ |
| 77 |
! -path "*/monitor/*" ! -path "*/guiCtrl/*" ! -path "*/example/*" \ |
| 78 |
! -path "*/tools/*"`" vxv2_cfg.txt \endverbatim |
| 79 |
|
| 80 |
\n |
| 81 |
sample_cfg.txt の中身 |
| 82 |
\include sample_cfg.txt |
| 83 |
|
| 84 |
\n |
| 85 |
followLine.exe 用の followLine.vcproj を作る例は以下の通り。 |
| 86 |
|
| 87 |
\verbatim |
| 88 |
% ruby ${VCPROGEN} --name followLine --type exe --sources "followLine.cpp" \endverbatim |
| 89 |
|
| 90 |
<hr> |
| 91 |
|
| 92 |
\section vcprogen_download_section スクリプトのソースコード |
| 93 |
|
| 94 |
こんな感じ |
| 95 |
|
| 96 |
\include vcprogen.rb |
| 97 |
|
| 98 |
以上 |
| 99 |
*/ |