web-dev-qa-db-ja.com

AutoconfおよびAutotoolsに代わるもの?

私はGNU Autotools (ほとんどが Autoconf 、たまに Libtool ))を頻繁に使用しています。I移植性が問題になるプロジェクトに取り組んでいます。それでも、チームの他のメンバーは m4 での作業に慣れていません。私は this を得ました1人ではなく4人の受信トレイ:

m4 is NOT LISP, dammit!

とにかく、おそらく誰かが何かをお勧めするかもしれませんPythonまたはPHP based?私はより大きなツリーのC側で作業している;どちらかと確信できる= PythonまたはPHP 5が前提条件として存在します。

52
Tim Post

同じ問題を解決しようとする CMake について良いことを聞きました。 ここ はウィキペディアの記事です

36
epatel

私は反対票を投じられる可能性がありますが、残念ながらautotoolsに代わるものは実際にはありません。 CMake、SCons、bjamは素晴らしいですが、深刻な作業になると、autotoolsが優れていることは明らかです。CMakeが同じことを行うことができないからではなく、それを行うのがはるかに難しいためです。 。

たとえば、autotoolsの最も一般的な代替手段であるCMakeには、次の欠点があります。

  • Gettextはサポートされていません。多くの翻訳と翻訳されたソースコードを管理する必要がある場合、これは本当の問題になるかもしれません。
  • アンインストールターゲットはサポートされていません。インストールしたプログラムをアンインストールできないのはとても不愉快です。
  • both共有ライブラリおよび静的ライブラリの自動ビルドはありません。
  • ドキュメントはvery限られていて悪い。

等々。

他にも多くのポイントがあります。残念ながら、autotoolsに代わる実際の高品質なものはありません。一方、Visual Studio用にWindows andで開発する場合、autotoolsを使用できず、そのようなツールを提供するCMakeを選択する必要があります。

47
Artyom

SCons で大成功しました。これはPython=でビルドされており、ビルドスクリプトは実際にはPythonスクリプト自体であり、非常に表現力があります。Webサイトから:

SConsは、オープンソースソフトウェア構築ツール、つまり次世代のビルドツールです。 SConsは、autoconf/automakeと同様の統合機能とMakeなどのコンパイラキャッシュを備えた、従来のccacheユーティリティの改良されたクロスプラットフォームの代替品と考えてください。つまり、SConsは、ソフトウェアを構築するためのより簡単で信頼性が高く、より高速な方法です。

38
Greg Hewgill

さまざまな代替Makefileジェネレーターとビルドシステムがたくさんあります。

利用可能ですが、C/C++を厳密にターゲットとするものではありません。

  • プリメイク
  • Ant (Javaの場合)
  • Rake (Rubyの場合)
  • (間違いなく、私はそれらすべてを知らない...)

しかし、これらすべてをリストした後、autotoolsには、エンドユーザーが他の依存関係を必要としないという大きな利点があります。構成スクリプトは、開発者によって1回だけ生成され、シェルスクリプトであるため、ユーザー側で特別なものを必要としません。上記のツールは、だれもがソースをビルドする前にインストールする必要があり、依存関係さえある場合があります。

18
raimue

単純に Makepkg-config を使用するのはどうですか?

ここに Makefileテンプレート があります。

少ないほど多くの人々です。

14
hendry

もう1つのauto *置換- mk-configure 。ドキュメントはこちら こちら

4
citrin

私はCMakeを確認しましたが、クロスコンパイルしない限り、これは優れた代替手段のように見えます。あなたがネイティブコンパイルをしているなら、あなたはそれを試すべきです

2
shodanex

python Mozillaで作成されているmakeのバージョン- pymake -があります。これはおそらくクロスプラットフォームでの使用をサポートしています。

1
Pete Kirkham

ANTまたはmavenからC/C++ソフトウェアをビルドする場合、 terp に興味があるかもしれません。これには、多くのプラットフォーム上の多くのC++コンパイラで動作するポータブルC++コンパイラタスクが含まれています。

1
alex