BCC32Cを使ってみた

プログラミング・ツールの利用方法

ホーム 前へ 次へ
BCC32C.EXE 

@概要 
コマンドライン・コンパイラです。ソースファイル(Cプログラム:.c、C++プログラム:.cpp)をコンパイルして、オブジェクト・ファイル(.obj)を作成します。
コンパイルだけではなく、リンカ(ilink32.exe)を呼び出して、実行型(.exe)ファイルまで作成します。
オプションは、「-w」のように「-」で指定します、「-h」にオプションをつけると、詳細(あれば)が表示できます。
BCC32C.EXEはclang対応のコンパイラですが、従来のコンパイラ(BCC32.EXE)のオプションが利用できるようになっています。Clangコンパイラのオプションは、「-Xdriver」に続いて記述すれば使用できます

A構文
BCC32C [@ファイル名] [+ファイル名] [<オプション>] ファイル名 [ファイル名] 

B オプション

<オプション>
 オプション 意味 
 -w  警告表示オン
 -c  コンパイルのみ
 -h  オプションの一覧を表示、「-h -<?>」でより詳細な内容を表示
 -e  ターゲットのファイル名の指定、例 -eXXXXXX.exe
-W 
-t
ターゲットを指定(オプション指定なければデフォルト、コンソールアプリ)
 コンソールアプリ:-WC 、-tC 、-tWC (なし or -W も可能)
 Windowsアプリ :-WW 、-tW 、-tWW  
 DLL       :-WD 、-tD 、-tWD

※「-h」で出てくるオプションの一覧はこちらをご覧ください。BCC32C.EXEで有効ではないオプションが分かるようにしています。

C その他
@ファイル名・・・レスポンス・ファイル
+ファイル名・・・代替環境設定ファイル

BCC32X.EXE (Clang コマンドライン・オプションに対応)

@概要 
コマンドライン・コンパイラです。ソースファイル(Cプログラム:.c、C++プログラム:.cpp)をコンパイルして、オブジェクト・ファイル(.obj)を作成します。
コンパイルだけではなく、リンカ(ilink32.exe)を呼び出して、実行型(.exe)ファイルまで作成します。

オプションは、伝統的なBCC32コマンドライン・オプションではなく、Clangコマンドライン・オプションで設定します。オプションとして「--help」を設定すると、全オプションのリストが表示できます。

A構文
  BCC32X [<オプション>] ファイル名 [ファイル名] 

B オプション

<オプション>
 オプション 意味 
 -W  警告表示オン
 -w 警告表示しない(bcc32cとは逆) 
 -c  コンパイルのみ
 --help  オプションの一覧を表示
 -o  出力ファイル名、 例 -oXXXXXX.exe
   

※非常に多くのオプションがあります。判明したものから、追記していきます。

C その他

ILINK32.EXE

@概要 
オブジェクト・ファイル(.OBJ)、ライブラリ(.LIB)を結合して実行型(.EXE)ファイルを作成するリンカです。

A構文
   ILINK32 [@ファイル名] [<オプション>] startupファイル objファイル, [exeファイル], [mapファイル], [libファイル] , [defファイル] , [resファイル]

<構文>
 項目 内容 
 @ファイル名  レスポンス・ファイル
 <オプション>  リンカオプション
 startupファイル  Startupモジュールの指定
 objファイル  オブジェクト・ファイルの指定
 exeファイル  実行形式ファイル名(指定しなければ、objファイルと同じ)
 mapファイル  -
 libファイル リンクするライブラリ・ファイル 
 defファイル  -
 resファイル  リンクするリソース・ファイル(Windowsアプリ)

Bオプション、スタートアップ・モジュール、ライブラリ・ファイル

<オプション>
 オプション 意味 
-L ライブラリのサーチパス
-w 警告表示オン
-Gn ステートファイルを作成しない。
 -Tpe  Windowsファイルをターゲットにする
 -Tpd   Dllファイルをターゲットにする
   

<スタートアップ・モジュール、ライブラリ・ファイル>
区分  用途   ファイル名  備考 
スタートアップ・モジュール、特殊処理      Dll用 c0d32.obj
c0d32w.obj
c0d32x.obj

W:ワイド文字版
X:例外処理なし 
 GUI(Windows)用 c0w32.obj
c0w32w.obj
 
W:ワイド文字用
 コンソール用 c0x32.obj
c0x32w.obj
c0x32x.obj

W:ワイド文字版
X:例外処理なし
  fileinfo.obj
gp.obj
wildargs.obj
 
 ライブラリ・ファイル  RTL(ランタイムライブラリ)  cw32.lib
cw32i.lib
cw32mt.lib
cw32mti.lib
シングルスレッド
シングルスレッドRTL要
マルチスレッド
マルチスレッドRTL要
 インポート・ライブラリ  import32.lib  APIのインポート用
       


MAKE.EXE

(1)概要
C言語のソースプログラムを指定した依存関係やあらかじめ決められたルールに従って、コマンド(コンパイル・リンクなど)を動かし、実行プログラムを作成するツールです。

MAKEは、unixのソフトウェア開発から始まったツールです。作成時刻をみて、必要なもののみをコンパイルするなど、効率的な開発ができます。

依存関係やコマンドをメイク・ファイル(デフォルトで「MAKEFILE」または「xxxxxxxx.mak」)に記述します。多くのソースファイルやライブラリからなるプロジェクトをコンパイルするような場合に力を発揮します。

(2)構文とオプション
      構文 MAKE [<オプション>] [[ターゲット名] [ターゲット名] ・・]

<オプション>
 オプション 意味 
 -f メイク・ファイルの指定、例:-fxxxxxxx.mak
 -B タイムスタンプにかかわらず、すべてのファイルをコンパイルする。
 -P 設定されたマクロ(変数)、依存関係、ルールなどを表示する。


メイク・ファイルに記述される内容

Makeを解説したサイトは多くあります、ここでは、Embarcadero C++ コンパイラで利用する場合の説明を行います

Sample1−2の複数のファイルから実行プログラムを作成する場合のメイク・ファイルを例にとります。

(1)依存関係、コマンド
1行目に依存関係を記述します。ここでは、「sample_102.exe」が、「sample_102_main.c sample_102_sub.c」から作られることを意味しています、文頭から書き「:」で区切ります。

2行目は、コマンド行でBCC32Cを使って、「sample_102_main.c sample_102_sub.c」から「sample_102.exe」を作る方法を記します。先頭は「TAB」で始めます、空白では正しく処理されません。

#  sample_102_1.mak 
sample_102.exe : sample_102_main.c sample_102_sub.c
        BCC32c -w -esample_102.exe sample_102_main.c sample_102_sub.c

実行結果は、以下になります。


(2)マクロ(変数)
(1)の例では、ソースファイル、作成する実行ファイル名を、あちこち書き替える必要があります。また、繰り返し書くことになります。

メイクファイルでは、マクロ(変数)が、使えます。
   例 TARGET(作成する実行ファイル名)、SOURCE(ソースファイル名)
      CC(Cコンパイラ)、CFLAGS(Cコンパイラのオプション)

依存関係行、コマンド行に書く時には、${}または$()で囲います。
(1)は、マクロ(変数)を使うことで、以下のように書き替えることができます。

#  sample_102_2.mak
TARGET = sample_102.exe
SOURCES = sample_102_main.c sample_102_sub.c

CC = BCC32C
CFLAGS = -w

${TARGET} : ${SOURCES}
        ${CC} ${CFLAGS} -e${TARGET} ${SOURCES}

実行結果は、(1)と同じものになります。

(3)マクロ(変数)・内部マクロ
特別な意味を持つマクロがあります。
    例 「$?」(ターゲットより後で変更されたコンポーネントのリスト)、
       「$@」(現在のターゲット)
(2)のターゲット、ソースを内部マクロで以下のように表現することができます。

#  sample_102_3.mak
TARGET = sample_102.exe
SOURCES = sample_102_main.c sample_102_sub.c

CC = BCC32C
CFLAGS = -w

${TARGET} : ${SOURCES}
        ${CC} ${CFLAGS} -e$@ $?


実行結果は(1)と同じものになります。

IMPLIB.EXE

@概要
このツールは、DLLまたはモジュール定義ファイルを入力として取り込み、インポート・ライブラリ(.lib)を作成します。
Embarcadero C++ Compiler以外に、Microsoftの開発環境で作られたDLLからもライブラリを作成できます。

※Microsoftのライブラリの形式は、COFF(Common Object File Format)で、Embarcadero C++開発ツールではOMF(Object Module Format)という形式が使われています。
     
A構文とオプション
構文 IMPLIB [オプション] LIBNAME[.LIB]  [ DLL ...] or [ DLL DEF ...] or  [@respfile ]

DLLから作成、DLLと定義ファイルから作成、レスポンス・ファイルから作成、が利用できます。

<オプション>

オプション  意味 
 -a  Microsoftライブラリとの互換性のためcdecl 関数に '_' エリアスを付加
 -w  警告なし


RC.EXE

@概要 
・Borland C++5.5では、Borland製のリソースコンパイラが提供されていましたが、Embarcadero C++コンパイラではMicrosoftのコマンドライン・ツール(RC.EXE)に変わっています。
・Windowsアプリケーションを開発する時に、リソース・ファイル(.RC)をコンパイルしてリソース・オブジェクトファイル(.RES)を作成します。リンカー(ILink32.exe)で実行ファイル(.EXE)に結合させます。

A構文とオプション
   RC [<オプション>] [リソース・ファイル(.RC)]

<オプション>

 オプション 意味 
 /i ヘッダファイルの場所を指定する。
例:/i"C:\borland\bcc102\include\windows\crtl;
    C:\borland\bcc102\include\windows\sdk"
 /fo RESファイルを指定する。
例:foxxxxxxx.res
 /?、/help オプション一覧を表示する。

   ・オプションは「/」でも「-」でも設定できます。

Bmakeファイルのサンプル

# win_sample.mak
# Copyright (c) 2021 Kimio Nakamura

CCFLAGS = -w -c
LDFLAGS = -L"C:\borland\bcc102\lib\win32c\release;C:\borland\bcc102\lib\win32c\release\PSDK"
        -Gn -x -v c0w32.obj

RCFLAGS = /i"C:\borland\bcc102\include\windows\crtl;C:\borland\bcc102\include\windows\sdk"

name = win_sample
name_res = win_sample_res

${name}.exe : ${name}.obj ${name_res}.res
ilink32 ${LDFLAGS} ${name}.obj , ${name}.exe , , cw32.lib import32.lib , , ${name_res}.res

${name}.obj : ${name}.c
bcc32c -w -c ${name}.c

${name_res}.res : ${name_res}.rc
rc ${RCFLAGS} ${name_res}.rc

C実行結果
 ・リソースコンパイラ(RC.exe)でリソースファイルをコンパイルした結果を以下に示します。




ホーム  前へ  次へ