Emacs で DxLib を使ったWindowプログラムをコンパイルする


最近はWindowsでDxLibを用いたWindowsプログラミングもやっている。

コンパイルにはbccを用いている。
VC++があまり好きではないという理由からだ。
(というか、もはやMicrosoftが好きではないのだが)

なので、開発環境にはBcc Developerを使用している。

しかし、当然それはEmacsではない。

XkeyEmacsでカーソルキーに移動は容易になったが、
しかし

  • auto-completeを始めとした補完
  • yasnippetを始めとしたテンプレート挿入

等、どうにも我慢できなくなったので、それならEmacsで開きながらコンパイルして実行できれば、とりあえずいいのではないかと考えた。

そこで、コマンドラインbccを使ってコンパイルしてみる。

結論から言うと、以下のようなコマンドでコンパイル出来る。

(defun bcc32()
  (interactive)
  (let* (
          (files-name (read-string "function's files: " "main"))
          (output-dir (read-string "output-dir: " "debug"))
          (command-string (format "bcc32 -W -3 -O1 -w- -AT -pc -H- -k -b -v -y -n%s -IC:\\borland\\directx\\DxLib_BCC\\bcc %s" output-dir files-name))
          )
     (message "%s\n%s" command-string (shell-command-to-string command-string))
  ))

前提条件として、同一ディレクトリ内にあり、そのいずれかを現在バッファに開いている状態のとき、このコマンドを呼ぶ。
→ -IオプションはDxLib.hのあるディレクトリを指定する。
Windowsでいうとろの"\"は"\\"で表現するので注意。
Bccに追加すべきファイルとか書いてあるものを参考にする。

これを実行すると、まず、コンパイルするためのファイル名を聞きに来る。
例えば、main.cpp と function.cpp がある場合、この2つを指定する。

例:

main function

関数の実装が書かれていないファイルは、指定する必要はない。
また、output-dirはアウトプットするディレクトリで、この関数では新規作成しないので、自分で作っておく必要がある。

ファイル名の一番はじめに書いた方の名前で、.exeが作られるはずなので、これを実行すると、windowプログラミングが実行される。

尚、このコマンドではDLLやコマンドプロンプトの実行ファイルは作れない。

これを足がかりにすれば、もっと快適に出来るはずだ。