OpenWatcom/tools/wmake

OpenWatcom/tools/wmake

Watcom コンパイラ附属の make。
Tools User's Guide(Windows 向けのものは tools.hlp)中に使い方の説明がある。

デフォルト記法に若干特殊なところがある。

  • 行連結に \ じゃなくて & を使う。
    起動時に /u オプションか /ms オプションを入れると \ になるが、Watcom コンパイラのコマンドライン上で使えるディレクトリセパレータが Linux 以外では \ しかない(普通の / はオプションスイッチ指定になる)ため注意が必要。
  • 依存ファイル展開マクロ
    ヘルプ中の Special Macros, Macros, Compatibility Between Open Watcom Make and UNIX Make あたりの項を参照。
  • ファイルインクルード、条件判断
    先頭に ! をつける(!include, !if〜, !else, !endif。!elif はないみたい)
  • 単なるマクロと環境変数は別扱い。
    環境変数を参照したいときは先頭に % をつける。変更するときは set 文を使う。ヘルプの Macros あたりを参照。

ポータビリティ的なアレ

ぶっちゃけ、使うコンパイラが OpenWatcom 決め打ちでないんなら素直に GNU Make を調達したほうがいいんじゃないでしょうか…(無責任)

というわけで、「その手のツールが揃ってないプラットフォーム&OpenWatcom コンパイラがデフォルト」みたいな人を選ぶビルド環境を想定した場合のアレ。

  • (コンパイラに指定する)ディレクトリセパレータ。DOS, OS/2, Windows はバックスラッシュ、それ以外(事実上 Linux しかない)はスラッシュ。wmake 内ではマクロでプラットフォームの判定が可能(GNU とかの Make だと環境変数見るとかの不確実な方法しか単体での判定法がないのよね…)
  • wmake ビルトインコマンドとして rm や for が使える(ヘルプの Command Line Execution の項参照)。rm とか入れてない Windows 環境でも rm でファイル消せるし Linux でも for を使ったバッチファイルライクな処理ができる(Watcom に Unix スタイルの ar がないのでライブラリ作成時は OBJS をファイルに書き出さないとどうにもなんねえ…もちろん Linux なら道具にまったく不自由しないが、Windows 系と処理を統一できる)。