USB メモリ活用講座
【実践編・Free C++ Compiler 開発環境ポータブル化】

< 最終更新日時: 2023-12-07 >

準備

Windows 8.1/10 でインストール作業を行なうには,管理者 (Administrator) 権限を持つユーザで作業を行うとよいでしょう.

BCC102 の開発環境には,ソースファイルを編集するためのエディタが含まれていません. 基礎編で紹介したフリーのテキストエディタ TeraPad を,あらかじめインストールしておきましょう.

BCC102 はエンバカデロ・テクノロジーズのダウロードページ から,「C++ コンパイラの入手方法」に従ってダウンロードできます. なお,ダウンロードの際には無償のユーザ登録 (EDN アカウントの作成) が必要です. まず,図1 の登録画面で名,姓 (名前が先で苗字が後です),Eメールアドレス,希望のパスワード,パスワードの確認,会社名 (長岡高専の学生は「長岡工業高等専門学校」),電話番号を記入します. 次に「私はロボットではありません」にチェックをして,要求されるタスク (指示された画像を選ぶなど) を成功させたら,「無料版のダウンロード」をクリックします.

図1・EDNアカウント作成
図1・EDNアカウント作成

BCC102 の配布ファイル BCC102.zip のダウンロードが始まったら,ダウンロード先は USB メモリではなく,ローカルハードディスクの適切なフォルダ (C:\temp など) を指定しましょう. BCC102.zip は 45.2 MB のファイルですので,十分なアキ容量のあるフォルダにしてください.

BCC102 の展開 (インストール)

BCC102 をインストールするためには約 200MB の空き容量が必要となります.

ローカル PC へインストールする場合は C:\tool\BCC102 を,USB メモリにインストールする場合は U:\tool\BCC102 を展開先として設定するものとします. インストールを行うには,管理者 (Administrator) 権限を持つユーザで作業を行う必要があります.

  1. 準備のところでダウンロードした BCC102.zip を展開 (解凍) します. Windows 標準のエクスプローラを利用する場合は,BCC102.zip を右クリックして「すべて展開」を選び,展開先として U:\tool を指定すると,U:\tool\BCC102 というサブフォルダが作成され,ファイルが展開されます.
  2. U:\tool\BCC102 フォルダに Embarcadero Freeware Software License Agreement.pdf という PDF ファイルがあり,使用許諾に関する事項が英文で書いてあるので,一読します. この条件に従えない場合は,BCC102 を使うことはできません.
  3. U:\tool\BCC102 フォルダに Installing and Using the Embarcadero C++ 10.2 Berlin Command-line Compiler.txt というテキストファイルがあり,BCC102 のインストール方法 (環境設定) や基本的な使い方が英文で書いてあるので,一読します.

これで BCC102 の実行に必要なファイルが解凍 (展開) されましたが,プログラム開発を行うためには初期設定を行う必要があります.

ローカルインストール

BCC102 は zip ファイルを展開(解凍)しただけでは利用できません. 展開先のフォルダ (C:\tool\BCC102) にある Installing and Using the Embarcadero C++ 10.2 Berlin Command-line Compiler.txt の記述にしたがって,環境変数 PATH への追加を行なう必要があります.

ローカルインストール時の基本設定

ここでは,コンピュータを利用する場合は,いつでも C コンパイラを起動できるように準備するための設定法を紹介します.

他の開発環境 (Visual Studio など) も併用したい場合や,長岡高専総合情報処理センターの端末室のように「BCC10x 開発環境」というショートカットを作成したい場合には,ローカルインストール時の応用設定 をご覧ください. また,画面キャプチャや操作手順は Windows 10 を基本に説明します.

  1. 環境変数の設定
    1. コントロールパネルを開き「システムとセキュリティ」から「システム」を開きます (図2)※1
      図6・Windows の「システム」画面
      図6・Windows の「システム」画面
    2. 「システムの詳細設定」(図2 の赤枠) をクリックして,システムのプロパティダイアログボックスを開きます (図3).
      図3・システムのプロパティダイアログボックス
      図3・システムのプロパティダイアログボックス
    3. 環境変数 (図3 の赤枠) をクリックして,環境変数ダイアログボックスを開きます (図4).
      図4・環境変数ダイアログボックス
      図4・環境変数ダイアログボックス
    4. 「システム環境変数」欄の「Path」(図4 の赤矢印) をクリックして,編集 (図4 の赤枠) をクリックし,システム変数の編集ダイアログボックスを開きます (図5).
      図5・システム変数の編集ダイアログボックス (Windows 10)
      図5・システム変数の編集ダイアログボックス (Windows 10)
    5. 図5 右上の 新規 ボタンをクリックすると,左の環境変数のリストの最後にテキスト入力のためのカーソルが表示されるので,C:\tool\BCC102\bin を追加して OK をクリックします.
    6. 環境変数ダイアログボックス (図4) に戻るので,OK をクリックします.
    7. システムのプロパティダイアログボックス (図3) に戻るので,OK をクリックします.

「コマンドプロンプト」を開き,bcc32c とタイプして Enter キーを押してみます (bcc32c の大文字/小文字は区別する必要はありません). Embarcadero C++ 7.30 for Win32 で始まる英語のメッセージが表示されれば,正しく設定が済んでいるものと思われます. 'bcc32c'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。といったメッセージが表示されたら,環境変数の設定に失敗している可能性が高いので,よく見直して修正しましょう.

日本語のユーザ名を使っている場合には,日本語ユーザ名でエラーが発生する場合の対処法も読んでください.

ローカルインストール時の応用設定

ここでは,Windows のデスクトップに,BCC102 によるプログラミング専用のコマンドプロンプトを起動するためのショートカットを作成する方法を紹介します. この方法によって環境変数の設定を行わずに BCC102 が利用可能となります. 日本語のユーザ名を使っている場合には,先に日本語ユーザ名でエラーが発生する場合の対処法を読んでおくと手間が省けるかもしれません.

  1. テキストエディタで次のような内容を記述したファイルを作成し, C:\tool\BCC102 の中に,bccenv.bat という名前で保存します (保存場所やファイル名が気に入らなければ,別のものに変えても構いません).
    set PATH=C:\tool\BCC102\bin;%PATH%
  2. デスクトップの何もない領域で右クリックし,「新規作成」-「ショートカット」を選択します.
  3. 「ショートカットの作成」ダイアログボックス (図6) が表示されるので,次のように記入して 次へ をクリックします.
    %ComSpec% /K C:\tool\BCC102\bccenv.bat
    図6・ショートカットの作成
    図6・ショートカットの作成
  4. 「名前の指定」ダイアログボックス (図7) が表示されるので,例えば「BCC102 開発環境」のような,適切な名前を記入して 完了 をクリックします.
    図7・ショートカットの名前設定
    図7・ショートカットの名前設定
  5. デスクトップ上に「BCC102 開発環境」という名前のショートカットアイコンができるはずです.
  6. できあがった「BCC102 開発環境」ショートカットアイコンを右クリックし,「プロパティ」を選択します.
  7. 「BCC102 開発環境のプロパティ」ダイアログボックス (図8) が表示されるので,「作業フォルダ」の欄に,主にプログラム開発を行うフォルダの場所を記入して OK ボタンをクリックします. Windows 8.1/10 では %HOMEDRIVE%%HOMEPATH% と記入すると,ユーザホームディレクトリが指定されることになります.
    図8・BCC102 開発環境のプロパティ
    図8・BCC102 開発環境のプロパティ

これで,「BCC102 開発環境」ショートカットアイコンから開かれるコマンドプロンプトの中でだけ Free C++ Complier を用いたコンパイル作業を行うことができるようになります.

Windows のスタートメニューに「BCC102 開発環境」を表示させたい場合は,デスクトップのショートカットアイコンを,「しかるべきフォルダ」にコピーしなければなりません. 「しかるべきフォルダ」は OS によって異なりますので,自分で調べてください.

日本語ユーザ名でエラーが発生する場合の対処法

Windows で日本語のユーザ名を使っている場合に,コンパイル時に次のようなエラーが発生することがあるようです.

Error opening 'X:XXXXX/xxxxx.cfg' for writing!
...
error: unable to opn output file 'X:XXXXX/xxxxx.o'....

これは,BCC102 がコンパイル時に参照する環境変数 TEMP に,日本語を含むパスが設定されていると,一時的なファイル作成に失敗することが原因のようです. とりあえずの対策としては,一時的なファイルを書き出しても問題のないフォルダ (C:\temp など) を作成し,コマンドプロンプトで次のように環境変数の設定を上書きすればよいでしょう.

set TEMP=C:\temp Enter

コマンドプロンプトを開くたびに,毎回この環境変数設定を行うのが面倒であれば,ローカルインストール時の応用設定で作成した bccenv.bat に,この 1 行を加えるとよいでしょう. ポータブルインストール の場合は,USB メモリを差し込んだ Windows PC に常に C:\temp が存在するとは限らないので,次のどれかを自分の判断で選んでください.

後者の方がエラーは発生しにくくなりますが,USB メモリへのファイル書き込みは速度が遅いことと,USB メモリの寿命を縮めることになるので,覚悟の上で使ってください (詳しくは基礎編・USB メモリの準備 を参照).

ポータブルインストール

USB ドライブのように,割り当てられるドライブレターが挿入するときに動的に決まるドライブに BCC102 をインストールする場合には,ちょっとした仕掛けが必要となります. 日本語ユーザ名でエラーが発生する場合の対処法も読んでおいたほうがよいでしょう.

ポータブルインストール時の基本設定

BCC102 のポータブル化を実現するために,ここでは WSH (Windows Scripting Host) を利用してみましょう. WSH は Visual Basic または JScript で書いたスクリプトと呼ばれる比較的短いプログラムを実行する環境のことです. 詳しくは,msdn の Microsoft Windows スクリプトテクノロジ などをご覧ください※2

それでは,テキストエディタを起動して,次のような VB (Visual Basic) スクリプトを入力しましょう. 先頭がアポストロフィ (') の行はコメント (注釈) となりますので,飛ばしてもかまいません. 正確にタイプする自信がない方は,ブラウザからエディタへコピー&ペーストすればよいでしょう.

' BCC102 ポータブル設定
Option Explicit
Dim objWshShell,objFS,objEnv,objStream
Dim strDrv,strBccPath
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
' カレントドライブのドライブレターを取得する
strDrv = objFS.GetDriveName(WScript.ScriptFullName)
' tool\BCC102 フォルダが存在するかをチェック
strBccPath = strDrv & "\tool\BCC102"
If objFS.FolderExists(strBccPath)=0 Then
    WScript.Echo strBccPath & "が見つかりませんので終了します"
    WScript.Quit 0
End If
' 環境変数PATHの先頭にbin,tool\BCC102\binを追加
Set objEnv = objWshShell.Environment("Process")
objEnv.Item("PATH") = strDrv & "\bin;" & strBccPath & "\bin;" & objEnv.Item("PATH")
' コマンドプロンプトウィンドウを開く
objWshShell.Run "%COMSPEC%"

入力し終えたら bcc102env.vbs と名前をつけて,USB ドライブ上の適当なフォルダ (U:\bin など) に保存しましょう. なお,保存するときには文字コード (エンコード) をシフト JIS (Shift_JIS) にする必要があるようです. 「メモ帳」でこのスクリプトを作成する方は,保存時の文字コードを ANSI に指定するとともに,ファイル名が bcc102env.vbs.txt となってしまわないよう気をつけてください (失敗したらリネームすればよいだけですが).

図9・エラーメッセージ
図9・エラーメッセージ

いよいよ動作確認です. エクスプローラなどで USB ドライブの中身を表示し,フォルダ bin の中にある bcc102env.vbs を起動します. そのとき「コマンドプロンプト」が開かれたら,第1段階は成功です. 右の図9 のようなエラーメッセージが出力された場合には,その USB ドライブに BCC102 の展開 (インストール) に従って正しくインストール作業をしてあるか,確認してください.

次に,そのコマンドプロンプトで TeraPad とタイプして Enter キーを押してみます (TeraPad の大文字/小文字は区別する必要はありません). このとき TeraPad が起動されれば,第2段階成功です. 'TeraPad'は内部コマンドまたは外部コマンド (中略) として認識されていませんといった類のメッセージが表示されるようでしたら,TeraPad のインストールをしてあるか,確認してください. 上記の bcc102env.vbs では USB ドライブの bin というフォルダにパスを通しています (環境変数 PATH に USB ドライブの bin フォルダを追加することを意味します). したがって,TeraPad のインストール先が別のフォルダである場合にも,エラーメッセージが表示されます. TeraPad のインストール先を bin とするか,スクリプトを修正して TeraPad のインストール先にパスを通すか,どちらかの修正を行なってください.

続いて,コマンドプロンプトで bcc32c とタイプして Enter キーを押してみます (bcc32c の大文字/小文字は区別する必要はありません). Embarcadero C++ 7.30 for Win32 で始まる英語のメッセージが表示されれば,第3段階も成功です. うまくいかないようでしたら,第2段階の説明や BCC102 の展開 (インストール) を参考に修正作業を行ないましょう.

最後は,実際に C 言語のプログラムを作成してコンパイル,実行してみましょう. 自作のプログラムを置くためのフォルダを USB ドライブの prog とします (このフォルダはエクスプローラなどであらかじめ作成しておくとよいでしょう). 次のように入力してカレントディレクトリを prog へ移動し,TeraPad を起動してファイル hello.c の編集を開始します.

cd \prog Enter
TeraPad hello.c Enter

TeraPad のダイアログボックスが表示され,「ファイルを新規作成しますか?」と聞いてきた場合には OK ボタンを押します. TeraPad が起動されたら,次のようなプログラムを入力して保存してから TeraPad を終了します (コピー&ペーストもできるかもしれませんが,このくらいは自力でタイプ入力しましょう).

#include <stdio.h>

int main( )
{
    printf("Hello, C world\n");
    return 0;
}

コマンドプロンプトの画面から,次のように入力してコンパイルを実行します.

bcc32c hello.c Enter

警告や Error といった文字列が表示されたら,ソースファイル hello.c に入力ミスがないかをよく確認して修正します. うまくコンパイルが終了したように思えたら,次のように入力してフォルダの中身を確認します.

dir Enter

hello.c のほかに hello.tdshello.exe が表示されればコンパイルは完了です. 最後に,実行プログラムを起動してみましょう.

hello Enter

Hello, C worldという文字列が表示されれば,最終チェックも完了です. コマンドプロンプトを閉じて,作業を終了するには次のように入力します.

exit Enter

なお,スタート-すべてのプログラム-アクセサリ-コマンドプロンプト から起動できるコマンドプロンプトでは,エディタの起動やコンパイルはできませんので,ご注意ください.

ここまでの動作が確認できたら,ランチャに bcc102env.vbs を登録するとよいでしょう.

ポータブルインストール時の基本設定 (別解)

別解として,基礎編・PortableApps.com の配布ソフト活用で紹介した,Command Prompt Portable を活用する方法が考えられます.

まずは,Command Prompt Portable をインストールして,1回起動して閉じます. これにより,PortablaApps\CommandPromptPortable\Data\Batch フォルダに commandprompt.bat というバッチファイルが作成されます.

次に,PortablaApps\CommandPromptPortable\Data\Batch フォルダの commandprompt.bat をテキストエディタで開き,次のような内容に編集して上書き保存します.

@echo off
color 1f
prompt $p$g
title USB-Drive(%~d0)
set PATH=%~d0\BIN;%~d0\tool\BCC102\bin;%PATH%
cd \

これで,Command Prompt Portable を起動すれば,C のソースファイルをコンパイルできるようになるはずです.

GLUT (OpenGL Utility Toolkit) の設定

BCC102 には,OpenGL および OpenGL 補助ライブラリ (glaux) が含まれています. したがって,BCC102 をインストールするだけで本格的な 3D グラフィックスプログラムが作成可能ですが,もう少し手軽に 2D/3D グラフィックスを描画する環境を整備するために,GLUT (OpenGL Utility Toolkit) を追加してみましょう.

GLUT を追加する作業は次の通りです.

  1. GLUT for Win32 の Web ページ から最新の配布ファイル glut-3.7.6-bin.zip をダウンロードします. USB ドライブではなく,ローカルディスクの適当なフォルダ (C:\temp など) に保存しましょう.
  2. ローカルディスクの適当なフォルダ (C:\temp など) 上で glut-3.7.6-bin.zip を展開 (解凍) します.
  3. 配布ファイルに含まれる GLUT のライブラリ (glut32.lib) は,Microsoft Visual C++ 用のライブラリで,BCC102 ではリンクすることができないので,次のコマンドで BCC102 用のライブラリを作成します※3
    implib glut32.lib glut32.dll Enter
  4. 以下の 3 ファイルを移動/コピーします.
    • glut32.dllU:\tool\BCC102\Bin
    • glut.hU:\tool\BCC102\inlcude\windows\sdk\gl
    • glut32.libU:\tool\BCC102\lib\win32c\release\psdk

それでは,動作確認をしましょう. テキストエディタで次のような簡単な GLUT プログラムを作成し,blankwindow.c という名前で保存します.

#include <GL/glut.h>

void display(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
}

void init(void) {
    glClearColor(0.0, 1.0, 0.0, 0.0);
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutCreateWindow(argv[0]);
    glutDisplayFunc(display);
    init();
    glutMainLoop();
    return 0;
}

BCC102 開発環境のコマンドプロンプトから,次のように入力してコンパイルします.

bcc32c blankwindow.c glut32.lib Enter
図10・GLUTプログラム
図10・GLUT プログラム

blankwindow.exe が生成されれば成功です. これを起動すると,図10のような緑色に塗りつぶされたウィンドウが表示されるはずです. blankwindow.c のユーザ定義関数 init で呼び出している関数 glClearColor では,4つの引数のうち,最初の 3 つによって RGB 加法混色による色指定を行っています.引数の範囲は 0.0 から 1.0 で,0.0 は対応する色 (光) を全く照射しないことを,1.0 は対応する色 (光) を最も強く照射することを表します. たとえば,この glClearColor の引数を現在の (0.0, 1.0, 0.0, 0.0) から (1.0, 0.0, 0.0, 0.0) に変えると,塗りつぶしの色は赤に変わります.

長岡高専・電子制御工学科では,GLUT を用いたグラフィックスプログラミングについて,5 年の集中講義として開設している選択科目「プログラミング演習 II」で学習します. 先ほど紹介した blankwindow.c は,その授業の一番最初に作成するプログラムです. この各科目の詳細については,本校のシラバス (授業計画) の中から電子制御工学科の専門科目をご覧ください.

GLUT によるグラフィックスプログラミングに興味がある方は,和歌山大・床井浩平先生の"GLUTによる「手抜き」OpenGL入門" などを参考にするとよいでしょう.