12

次の件についてアドバイスが必要です。

現在、qmake とうまく連携するように設定されている QT プロジェクトがあります。ただし、プロジェクトの要件と将来の方向性の拡大により、アプリケーションのビルド方法にいくつかの変更が必要になるため、ビルドシステムを変更する必要があります。

現在、すべてのソース ファイルはかなり大きな実行可能ファイルにコンパイルされています。これは (手動で) パッケージ化され、ダウンロード エリアに送信されます。すべて良好。

しかし、私が目指している方向は、各「機能」が共有ライブラリにコンパイルされ、ユーザー (開発者) がコンパイルしたいコンポーネントを選択できるように、アプリケーションをモジュール化することです。これらの「機能」は、ソース ツリーのディレクトリ (たとえば、query_builder、reverse_engineer、mysql_DB_support、version_managemen ディレクトリなど) に配置され、ユーザーがアプリケーションをビルドするときに、クエリ ビルダーを使用してアプリケーションをコンパイルするようにビルド システムに指示するだけです。 、および mysql を使用しますが、リバース エンジニアは行いません。この場合、ビルド システムは指定されたディレクトリからソース ファイルを追加し、そこから lib を作成します。

次のような他の要件もあります。

  • Windows ビルド、Linux ビルド
  • オプションでパッケージビルド (deb、rpm)
  • QT およびおそらく QT5 のサポート
  • 複数の実行可能ファイル (GUI クライアント、CLI クライアント)

いくつかの「市場調査」の後、CMake と SCons を使用する可能性のある 2 つのシステムとしてまとめました。CMake の経験と Python の経験がありますが、SCons はまだありません。

しかし、どちらが私の場合に最適なのかわかりません。ここであなたの助けが必要です。どちらを使用すればよいか詳しく教えてください。また、私の要件が qmake で達成可能であると思われる場合は、それもお知らせください。

乾杯、f。

4

1 に答える 1

8

この質問に対する正解はありません。それは通常、vi と emacs のような個人的な好みに帰着します (正解はもちろん vi です :)

それぞれの長所と短所を検討し、それらが要件とニーズにどのように適合するかを評価する必要があります。

主に CMake 構文に耐えられないため、私は SCons に偏っていますが、それは個人的な好みです。私が見たそれぞれの長所と短所は次のとおりです。

CMake

長所:

  • QMake に似ていますが、makefile ジェネレーターであることを考慮してください。
  • CMake は広く使用されているため、多くのリファレンスとヘルプが利用可能です。
  • GUIを持っています(以下のCalvin1602のコメントに基づいて、私自身は知りません)

短所:

  • CMake には独自の独自の構文があり、多くの人 (私自身を含む) は直感的ではないと感じています。
  • 2 ステップのビルド プロセス。最初に Makefile を作成し、次に実際にコンパイルを実行します。
  • 生成された Makefile を読み取るのは不可能に近い

SCons

長所:

  • 構文は Python で、広く使用されており、比較的習得が容易です。(そしてPythonはクールです:)
  • ビルド プロセスは 1 ステップで、SCons を実行するだけでコンパイルされます。生成または維持する中間ビルド ファイルはありません。
  • 以前は、SCons は CMake よりも遅かったのですが、それ以降は、メイクファイルを生成する必要がないため、CMake と同じかそれ以上に高速になりました。
  • 豊富な機能セットと多くの言語がサポートされていますが、CMake は C/C++ に重点を置いています。
  • 非常に正確な暗黙の依存関係システム: 依存ヘッダー、ライブラリなどを明示的にリストする必要はありません。必要に応じて、明示的な依存関係を指定できます。
  • 日食プラグインが利用可能です。Eclipse には、Python で使用できるプラグインもあります。
  • ここに記載されているように、MOC およびその他の関連する codegen を処理する Qt プロジェクト用に作成されたツールがあります。

短所:

  • SCons は CMake ほど広く使用されていない可能性がありますが、利用可能なサポートはまだたくさんあります。
  • プロジェクトのサイズによっては、SCons はすべてのビルド スクリプトを解析し、実際に何かをコンパイルする前にメモリ内に依存関係ツリーを構築するため、大量のメモリを使用する場合があります。ただし、これにより、より正確な依存関係チェックが可能になります。
于 2013-01-07T14:25:40.827 に答える