* 7 ポータブルなmakefile
- 最小公倍数方式:2つある。
- 対象となるすべてのプラットフォームで共通に利用
可能なツールだけをつかう。
- 使いたいツールを選び、対象となるすべてのプラッ
トフォームでそれが使えるように、必要に応じて
移植する。
- makeで差異を吸収:
- マクロや関数でプラットフォームの差異を吸収。
** 7.1 移植における問題点
- ここでの「移植」とはmakefileの移植というか自分
が作っているパッケージの移植のことだと思う。
- ポイントは次のもの
- プログラム名
- パス名
- オプション
- シェル機能
- プログラムの挙動
- OS
** 7.2 Cygwin
- Cygwinは当面関わることはないので、この章割愛。
*** 7.2.1 行末文字
*** 7.2.2 ファイルシステム
*** 7.2.3 プログラムの衝突
** 7.3 プログラムとファイルを管理する
- プログラム名は変数に格納する。
- ifdefなどをつかって、プラットフォーム毎に値を変
える。
- プラットフォーム毎に設定べきものが大量にある場合
は、別途定義ファイルに記述する。unameになどに因
んだファイル名とし、includeする。
** 7.4 ポータビリティのないツールで作業する
- まず、GNUのプログラムはポータビリティがあると考
えているようだ。
- 次に、perlやpythonはGNUのプログラムではないが、
同等のポータビリティがあると考えているようだ。
- それ以外のものの中に、ポータビリティが無いもの
がある。
- それを使う場合には、関数を作って、その呼び出し
の引数でそれぞれのプラットフォーム毎のプログラ
ムを指定するようにする。
- この節、何が主題なのか、ちょっとわかりずらい。
*** 7.4.1 標準シェル
- /bin/shにも非互換性がある。
- 自分のプロジェクトなら、これを/bin/bashなど、他
のシェルに固定するのもあり。
** 7.5 automake
- automakeは、昔ながらのmakefileを生成する。すな
わち互換性を重視して、"GNU make"の拡張機能はア
ペンド(+=)以外は使わない。
- すなわち最小公倍数型である。
- 最小公倍数型で行く場合は、automakeの使用を検討
するのもよい。
さあ、次は(自分としての)最終章!
こつこつ。
0 件のコメント:
コメントを投稿