2

テスト済みのさまざまなコンパイラとプラットフォームでクリーンにコンパイルできる小さなANSICアプリケーションがあります。プリプロセッサスイッチや外部依存関係は使用せず、makefileは次のようなものです。

myapp: *.c
    gcc *.c -Wall -o myapp

このプロジェクトを可能な限り移植可能なソース形式で配布したい場合、automake / autoconfを使用してラップする必要がありますか?これは実際に携帯性を向上させるのでしょうか、それともそのままポータブルになるのでしょうか?

私が考えることができる唯一のことは、それがシステムコンパイラを自動的に選択するということですが、それはまた多くの複雑さを追加します。その価値はありますか?

4

3 に答える 3

4

それだけの価値があるとは思えません。OS固有の呼び出しのないANSICは、動作するCコンパイラを備えたすべてのプラットフォームでサポートされる必要があります。これにautomake / autoconfを追加すると、メンテナンスが現在よりも快適でなくなる可能性があります。

ただし、$(CC)makefileで変数を使用して、システムのコンパイラを自動的に使用することができます。

myapp: *.c
    $(CC) *.c $(CFLAGS) -o myapp
于 2009-10-28T09:06:16.897 に答える
4

コンパイル ルールを指定する必要はありません。したがって、$(CC)、 、$(CFLAGS)およびには必要ありません。これは、C ソースから実行可能ファイルを作成する暗黙のルールがあるためです$(LDFLAGS)make

Makefileシンプルに保ちます:

all: myapp

myapp: *.c

clean:
    rm -f myapp

.PHONY: all clean

ところで、ソースファイルがそのディレクトリ内の唯一のCファイルになるという保証はないため、ソースファイルのリストを指定することをお勧めします

于 2009-10-28T09:29:52.903 に答える
0

機能面ではほとんど得られないと感じるかもしれませんが、次の理由から検討することをお勧めします。

  • autoconf の使用は、C コードを配布するための非常に一般的な方法です。その結果、ほとんどの人はそれを使用して構築およびインストールすることに慣れているはずであり、ユーザーにとってはより簡単になります。
  • プロジェクトで autoconf を機能させるための努力をすれば、その追加機能のいくつかを利用たい場合に、それが大幅に簡単になります。
于 2009-10-28T09:18:03.333 に答える