12

共有ライブラリを構築したい。GNU/Linux は、開発およびターゲット プラットフォームです。C は実装言語です。

ビルド システムをどのようにセットアップするかを決めることができず、それぞれが嫌いな理由がたくさんある次の 3 つのオプションを検討し続けます。

  • 手作りの Makefile - 私は過去にほとんどこの方法で作業してきました
  • GNU Autotools - 今年の初めに autotools を使用して共有 C ライブラリを構築しましたが、その方法と何百ものチュートリアルをどこで選択したかを忘れてしまいました。
  • waf - おそらく単純ですが、それほど簡単ではありません。今日の午後に動作しました。

どちらに行くか決められません。1 つに落ち着いて作業を開始し、問題に遭遇して、もう 1 つのシステムが優れていると判断します。私は立ち往生しています。問題を解決するのに役立つかもしれない誰かがこれに光を当てることができますか?

4

4 に答える 4

17

ここに、私が何年にもわたって気づいたツールへのリンク (およびサイトからの引用) をいくつか示します。

PreMake : あなたはソフトウェア プロジェクトのマネージャーです。ユーザーから Visual Studio ワークスペース ファイルを求められていますが、Visual Studio がありません。あるいは、あなたは Windows 開発者であり、Linux への移植のために Makefile を同期させるのに苦労しているかもしれません。これは、オープン ソース プロジェクトによくある問題です。ユーザーを 1 つのビルド ツールに制限して、潜在的な貢献者を遠ざけるか、2 つ、3 つ、またはそれ以上のビルド スクリプト セットを手動で維持します。プレメイクに入ります。

CMake : クロスプラットフォームのオープンソース ビルド システムである CMake へようこそ。CMake は、ソフトウェアをビルド、テスト、およびパッケージ化するために設計されたツール ファミリです。CMake は、単純なプラットフォームとコンパイラに依存しない構成ファイルを使用してソフトウェア コンパイル プロセスを制御するために使用されます。CMake は、選択したコンパイラ環境で使用できるネイティブの makefile とワークスペースを生成します。

buildconf : これはほんの小さなビルド準備スクリプトとして始まりました...そして何年にもわたって非常に便利なユーティリティに成長し、サポート リクエストとクロスプラットフォーム コンパイルで時間と労力を節約してきました。これは、GNU ビルド システムを使用するプロジェクトでよく見られるのと同じ種類のスクリプトです。GNU Autotools としても知られているか、Autoconf、Automake、および Libtool として個別にツールごとに知られています。これらのプロジェクトには、通常、libtoolize、autoconf、autoreconf などのさまざまなツールを実行して、プロジェクトの開発者向けにビルド システムを準備するカスタム ヘルパー スクリプトが記述されていることがよくあります。多くの場合、このスクリプトは buildconf または autogen.sh という名前になりますが、目的は同じです: ビルド システムをコンパイル用に準備するためです。

BSDBuild : BSDBuild (以前の csoft-mk) は、従来の 4.4BSD 共有/mk ファイルから派生した、シンプルで自己完結型の移植可能なビルド システムです。BSDBuild は BSD スタイルの makefile を許可しますが、BSD の make 拡張機能を使用しないため (代わりに標準の Bourne スクリプト フラグメントを使用します)、ビルド システムはほとんどのオペレーティング システムと make フレーバーに移植可能です。

iCompile : ゼロ構成ビルド システムを iCompile します。

OMake : (OCaml) OMake は、スケーラビリティと移植性のために設計されたビルド システムです。

BakeFile : Bakefile は、クロスプラットフォーム、クロスコンパイラのネイティブ makefile ジェネレーターです。ビルド タスクのコンパイラに依存しない記述を入力として受け取り、ネイティブの makefile (autoconf の Makefile.in、Visual C++ プロジェクト、bcc makefile など) を生成します。

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

Make project : Make project はプロジェクトの骨組みを作る bash スクリプトです。コマンドラインから提供される情報を使用して、新しいプロジェクトを開始するタスクを自動化します。デフォルトで作成されるパッケージは、自動ツールを使用して管理される、選択されたスケルトンの「hello world」プロジェクトです。

メンテナンスされていない、または死んでいるプロジェクト (07-2012)

cppmake : Cppmake は make のフロントエンドであり、makefile を手動で作成するよりも手間がかからず、より正確に C++ プログラムをビルドできます。

スプレー: スプレーは、プロジェクトの構成、ビルド、およびインストールを支援するビルド ツールです。目的は autotools または CMake に似ていますが、Python プログラミング言語を使用して SCons および waf の精神に従って作成されています。

于 2009-10-20T18:10:29.150 に答える
7

ビルド システムの目的はライブラリをターゲット システムにインストールすることなので、ソフトウェアをインストールするすべての人が使い慣れている汎用ツールのいずれかを使用する必要があります。

したがって、ビルド システムの主な目的は、柔軟な構成機能です。

誰でも使えるのはCMakeAutotoolsです。それらに固執します。

于 2009-10-20T18:03:11.060 に答える
7

まあ:すべてのシステムは最悪です。吸わない人もいます。muttメーラーが述べているように。とはいえ、いくつかの簡単なコメント:

  • Qtは非常に優れており、よく文書化されています。私は Qt が作成する .pro ファイルが気に入っています。さらに、予約するのは確実にクロスプラットフォームであり、必要に応じて IDE などを取得できるようになりました。
  • CMakeは私たちが仕事で使用しているもので、クロスプラットフォームでもあります。慣れることはできますが、それでも風変わりだと思います。
  • GNU Autoconf などは、私が自分のプロジェクトで使用しているものです。風変わりですが、私はそれに慣れており、Intertubes の非常に多くの実用的な例があります。
  • もしかしてスコン
于 2009-10-20T18:00:09.730 に答える
1

私はmkproject(Make Project)をよく使います。人々が使用することを提案しているように、これは単純なautotoolsのものですが、IDEプロジェクトジェネレーターのようなデフォルト構成をロードします。残りは単純なautotoolsで管理するのはあなた次第です(info configure、info autoconf、info automakeはここであなたのアシスタントです、ちなみにmkprojectは厳密に従います)。

あなたは常にいくつかの基本的な手順でプロジェクトを開始し、configure.acを編集しますMakefile.amを編集します...、mkprojectはautotoolsレイヤーに侵入したり新しい構文を追加したりすることなくそれを行います。クールなのは、引数によってautotoolsプロジェクトを最初からパーソナライズし、時間とエラーを節約できることです。

autotoolsを使用してランダム/多数のプロジェクトを生成する場合は、試してみてください。manとinfoページが付属しており、Webサイトでも使用方法が説明されています。

于 2012-08-17T22:46:10.287 に答える