正月になり、気持ちはNimに移っていたのですが、昨年末にbcc32c.exe専用のコンパイルツールとして作ったBatchGoodの説明をしていなかったことを忘れていました。今回もBatchGoodは、make.exeを使ったBCCMakerのダウンサイズ版なので、特徴点のみササっとやりましょう。
まず、開発コンセプトは「bcc32.exeとやや異なるbcc32c.exeのコマンドセットに合わせて、本当に必要なオプションのみを選べる(注)コンパイルツール」で、それ以外のオプションは情報は載せています(添付ヘルプファイルの資料2「対比表」)が、ご自分でバッチファイルをいじってください、というものです。
注:以下ヘルプの「bcc32cのオプション」参照
【bcc32c.exe】BCCForm and BCCSkeltonプログラムのコンパイルに関連するオプション
1.必須のオプション
(1)ターゲットオプション(-tX)
-tC CUIアプリケーション
-tW Windowsアプリケーション
-tD Dynamic Link Library(DLL)
-tR RTL(Run Time Library - cc32c250.dll)を利用するアプリ
(解説:従来の-Wうや-WCオプションは使えません。)
(2)ファイルインクルードオプション
-I<ファイルパス、名>(#includeで読み込むヘッダーファイルのサーチパス)
(3)警告表示オプション(-w、-w-)
警告を表示する(-w)、表示しない(-w-)
(4)最適化オプション(-Ox)
-O1 サイズを最適化
-O2 速度を最適化
(解説:コンパイラーは-Od(最適化なし)を通しますが、何もしないならオプションを与える必要はない、ということで書いていません。)
2.使う可能性のあるオプション
(1)コンパイルのみオプション(別途リンクが必要)
-c
(2)呼び出し規約オプション
-pc C呼び出し
-ps stdcall呼び出し
-pm fastcall呼び出し
(解説:利用不可、towebやEmbarcaderoに書かれた呼び出しオプションは畢竟生きています。)
(3)重複文字列等号オプション
-d
(4)出力先指定オプション
-n<出力先パス>
(5)OBJファイルパス、名指定オプション
-o<OBJファイルパス、名>
(6)enum列挙型をint とするオプション(デフォルト)
-b
(7)ソースレベルデバッグオプション(デバッグ用)
-v
(8)ソース行番号オプション(デバッグ用)
-y
【参考】使う可能性のあるbrc32c.exeコンパイルオプション
-r コンパイルのみ(resファイル出力-別途リンクが必要)
(解説:上記の「必須」以外はBatchGoodの設定ダイアログでは対応していません。後はBatchGoodのオプションエディットボックスに入力するか、出力されたバッチファイルをいじってください。)
ではリソース関連ファイルから。
【BatchGood.rc】
//-----------------------------------------
// BCCForm Ver 2.41
// An Easy Resource Editor for BCC
// Copyright (c) February 2020 by ysama
//-----------------------------------------
#include "ResBatchGood.h"
#define TBSTYLE_TOOLTIPS 0x0100
#define SBT_TOOLTIPS 0x0800
//----------------------------------
// ダイアログ (IDD_MAIN)
//----------------------------------
IDD_MAIN DIALOG DISCARDABLE 0, 0, 282, 220
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | DS_SETFONT | DS_CENTER
CAPTION "BatchGood"
MENU IDM_MAIN
FONT 9, "MS 明朝"
{
CONTROL "", IDC_FILETREE, "SYSTREEVIEW32", WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_LINESATROOT | TVS_HASLINES | TVS_HASBUTTONS | TVS_SHOWSELALWAYS, 4, 20, 148, 88, WS_EX_CLIENTEDGE
CONTROL "開く", IDC_OPEN, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 4, 108, 72, 15
CONTROL "閉じる", IDC_CLOSE, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 80, 108, 72, 15
CONTROL "詳細", IDC_DETAIL, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 248, 17, 30, 14
CONTROL "", IDC_BCC32OPTION, "EDIT", WS_CHILD | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | ES_LEFT, 158, 32, 120, 15, WS_EX_CLIENTEDGE
CONTROL "", IDC_BRC32OPTION, "EDIT", WS_CHILD | WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | ES_LEFT, 158, 62, 120, 15, WS_EX_CLIENTEDGE
CONTROL "", IDC_INCLPATH, "EDIT", WS_CHILD | WS_BORDER | ES_AUTOHSCROLL | ES_LEFT | ES_READONLY, 158, 92, 120, 15, WS_EX_CLIENTEDGE
CONTROL "", IDC_OUTPUT, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_VSCROLL | WS_HSCROLL | ES_READONLY | ES_LEFT, 4, 124, 274, 81, WS_EX_CLIENTEDGE
CONTROL "", IDC_TOOLBAR, "TOOLBARWINDOW32", WS_CHILD | WS_VISIBLE | TBSTYLE_SEP | TBSTYLE_TOOLTIPS, 0, 0, 0, 0
CONTROL "", IDC_STATUSBAR, "MSCTLS_STATUSBAR32", WS_CHILD | WS_VISIBLE | SBT_TOOLTIPS | CCS_TOP | CCS_NOMOVEY, 0, 0, 0, 0
CONTROL "bcc32c-オプション", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 158, 20, 80, 9
CONTROL "brc32-オプション", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 158, 50, 80, 9
CONTROL "インクルードパス", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 158, 80, 80, 9
}
//----------------------------------
// ダイアログで使用するメニュー
//----------------------------------
IDM_MAIN MENU DISCARDABLE
{
POPUP "ファイル(&F)"
{
MENUITEM "ファイルを開く(&O)", IDM_OPEN
MENUITEM "ファイルを閉じる(&C)", IDM_CLOSED
MENUITEM SEPARATOR
MENUITEM "終了(&X)", IDM_EXIT
}
POPUP "ツール(&T)"
{
MENUITEM "バッチファイルを作る(&M)", IDM_MAKEBATCH
MENUITEM SEPARATOR
MENUITEM "バッチファイルの編集(&E)", IDM_BATCHEDIT
MENUITEM SEPARATOR
MENUITEM "バッチファイルの実行(&R)", IDM_RUN
MENUITEM SEPARATOR
MENUITEM "設定(&S)", IDM_SETTING
}
POPUP "ヘルプ(&H)"
{
MENUITEM "BatchGoodの使い方", IDM_HELP
MENUITEM "BCC32Cのオプション", IDM_OPTION
MENUITEM "バージョン情報(&V)", IDM_VERSION
}
}
//----------------------------------
// ダイアログ (IDD_DETAIL)
//----------------------------------
IDD_DETAIL DIALOG DISCARDABLE 0, 0, 216, 150
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_DLGFRAME | WS_CAPTION | WS_SYSMENU | DS_SETFONT | DS_CENTER
CAPTION "コンパイルオプション詳細"
FONT 8, "MS 明朝"
{
CONTROL "終了", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 159, 130, 48, 15
CONTROL "", IDC_TARGETTYPE, "COMBOBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST | WS_VSCROLL, 90, 6, 120, 60
CONTROL "使用する", IDC_MULTITHREAD, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX, 90, 25, 120, 12
CONTROL "", IDC_TARGETDIR, "COMBOBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST | WS_VSCROLL, 90, 42, 120, 36
CONTROL "", IDC_OPTIMIZATION, "COMBOBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST | WS_VSCROLL, 90, 60, 120, 48
CONTROL "", IDC_CALLTYPE, "COMBOBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST | WS_VSCROLL, 90, 79, 120, 60
CONTROL "?", IDC_INCLBTN, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 198, 97, 12, 12
CONTROL "全て表示する", IDC_WARNING, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX, 90, 114, 120, 12
CONTROL "", IDC_INCLPATH, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 90, 96, 105, 14, WS_EX_CLIENTEDGE
CONTROL "実行ファイル形式", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 9, 72, 10
CONTROL "マルチスレッド", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 27, 72, 10
CONTROL "出力ディレクトリー", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 45, 72, 10
CONTROL "最適化", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 63, 72, 10
CONTROL "呼出し規約", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 81, 72, 10
CONTROL "インクルードパス", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 99, 72, 10
CONTROL "警告表示", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 115, 72, 10
}
//----------------------------------
// ダイアログ (IDD_SETUP)
//----------------------------------
IDD_SETUP DIALOG DISCARDABLE 0, 0, 300, 96
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_DLGFRAME | WS_CAPTION | WS_SYSMENU | DS_CENTER
CAPTION "bcc32c, brc32等の設定"
FONT 8, "MS 明朝"
{
CONTROL "終了", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON, 244, 78, 48, 15
CONTROL "bcc32cへのパス", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 9, 75, 9
CONTROL "", IDC_BCCPATH, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 90, 6, 165, 15, WS_EX_CLIENTEDGE
CONTROL "検索", IDC_BCCBTN, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 261, 6, 30, 15
CONTROL "brc32へのパス", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 27, 75, 9
CONTROL "", IDC_BRCPATH, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 90, 24, 165, 15, WS_EX_CLIENTEDGE
CONTROL "検索", IDC_BRCBTN, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 261, 24, 30, 15
CONTROL "エディターのパス", 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_NOTIFY, 6, 45, 75, 9
CONTROL "", IDC_EDITPATH, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | ES_READONLY | ES_LEFT, 90, 42, 165, 15, WS_EX_CLIENTEDGE
CONTROL "検索", IDC_EDITBTN, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON, 261, 42, 30, 15
CONTROL "tdsフィルを削除する", IDC_DELTDS, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX, 90, 60, 120, 12
CONTROL "resフィルを削除する", IDC_DELRES, "BUTTON", WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX, 90, 78, 120, 12
}
//----------------------------------
// ダイアログ (IDD_HELP)
//----------------------------------
IDD_HELP DIALOG DISCARDABLE 0, 0, 360, 300
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | DS_CENTER
CAPTION "コンパイラーオプション"
FONT 10, "MS 明朝"
{
CONTROL "終了", IDOK, "BUTTON", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 156, 282, 48, 15
CONTROL "", IDC_EDIT, "EDIT", WS_CHILD | WS_BORDER | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_HSCROLL | WS_VSCROLL | ES_READONLY | ES_LEFT, 6, 6, 348, 268, WS_EX_CLIENTEDGE
}
//----------------------------------
// ダイアログ (IDD_VERSION)
//----------------------------------
IDD_VERSION DIALOG DISCARDABLE 0, 0, 160, 54
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | DS_MODALFRAME | DS_3DLOOK | DS_CENTER
CAPTION "バージョン情報"
FONT 9, "Times New Roman"
{
CONTROL IDI_ICON, 0, "STATIC", WS_CHILD | WS_VISIBLE | SS_ICON, 4, 10, 18, 18
CONTROL "", IDC_VERTXT, "STATIC", SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 32, 4, 106, 26
CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 67, 38, 26, 12
}
//----------------------
// ポップアップメニュー
//----------------------
IDM_POPUP MENU DISCARDABLE
{
POPUP "ポップアップ"
{
MENUITEM "開く", IDC_OPEN
MENUITEM SEPARATOR
MENUITEM "閉じる", IDC_CLOSE
}
}
//--------------------------
// イメージ(IDI_ICON)
//--------------------------
IDI_ICON ICON DISCARDABLE "Icon.ico"
//--------------------------
// イメージ(IDI_TOOLBAR)
//--------------------------
IDI_TOOLBAR BITMAP DISCARDABLE "BatchGood.bmp"
//--------------------------
// イメージ(IDI_CLOSE)
//--------------------------
IDI_CLOSE BITMAP DISCARDABLE "CLOSE.bmp"
//--------------------------
// イメージ(IDI_CPPBMP)
//--------------------------
IDI_CPPBMP BITMAP DISCARDABLE "CPP.bmp"
//--------------------------
// イメージ(IDI_RCBMP)
//--------------------------
IDI_RCBMP BITMAP DISCARDABLE "RC.bmp"
//--------------------------
// イメージ(IDI_LIBBMP)
//--------------------------
IDI_LIBBMP BITMAP DISCARDABLE "LIB.bmp"
//--------------------------
// イメージ(IDI_DOC)
//--------------------------
IDI_DOC BITMAP DISCARDABLE "DOC.bmp"
ツリービュ―用のイメージファイルが多いことと、ポップアップメニュ―を別に用意したこと、が特徴でしょうか?あとツールバー、ステータスバー用の定数(赤字)をお忘れなく。
【ResBatchGood.h】
//-----------------------------------------
// BCCForm Ver 2.41
// Header File for Resource Script File
// Copyright (c) February 2020 by ysama
//-----------------------------------------
//---------------------
// ダイアログリソース
//---------------------
// ダイアログ IDD_MAIN
#define IDC_FILETREE 100
#define IDC_OPEN 101
#define IDC_CLOSE 102
#define IDC_DETAIL 103
#define IDC_BCC32OPTION 104
#define IDC_BRC32OPTION 105
#define IDC_INCLPATH 106
#define IDC_OUTPUT 107
#define IDC_TOOLBAR 108
#define IDC_STATUSBAR 109
// ダイアログ IDD_DETAIL
#define IDC_TARGETTYPE 300
#define IDC_MULTITHREAD 301
#define IDC_TARGETDIR 302
#define IDC_OPTIMIZATION 303
#define IDC_CALLTYPE 305
#define IDC_LANGUAGETYPE 306
#define IDC_INCLBTN 307
#define IDC_WARNING 309
// ダイアログ IDD_SETUP
#define IDC_MAKEPATH 400
#define IDC_MAKEBTN 401
#define IDC_BCCPATH 402
#define IDC_BCCBTN 403
#define IDC_BRCPATH 404
#define IDC_BRCBTN 405
#define IDC_ASMPATH 406
#define IDC_ASMBTN 407
#define IDC_EDITPATH 408
#define IDC_EDITBTN 409
#define IDC_DELTDS 410
#define IDC_DELRES 411
// ダイアログ IDD_HELP
#define IDC_EDIT 500
// ダイアログ IDD_VERSION
#define IDC_VERTXT 600
//---------------------
// メニューリソース
//---------------------
// メニュー IDM_MAIN
#define IDM_OPEN 200
#define IDM_CLOSED 201
#define IDM_EXIT 202
#define IDM_MAKEBATCH 203
#define IDM_BATCHEDIT 204
#define IDM_RUN 205
#define IDM_SETTING 206
#define IDM_HELP 207
#define IDM_OPTION 208
#define IDM_VERSION 209
//---------------------
// イメージリソース
//---------------------
#define IDI_ICON 700
#define IDI_TOOLBAR 800
#define IDI_CLOSE 900
#define IDI_CPPBMP 1000
#define IDI_RCBMP 1100
#define IDI_LIBBMP 1200
#define IDI_DOC 1300
//---------------------
// ストリングテーブル
//---------------------
//--------------------
// アクセラレーター
//--------------------
//------------------
// ヴァージョン情報
//------------------
このファイルに対しての特段のコメントはありません。