1

私たちは最初からオープンソース ソフトウェア プロジェクトを持っています。このプログラムは高度にモジュール化されていると考えられています。たとえば、基礎となるデータベースは、エンドユーザーの好みに応じて、sqlite、postgre、または berkley のいずれかになります。

私が自信を持っている唯一の体系的なアプローチは、Autotools (GNU ビルド システム) を使用することです。知りたいのですが、それに代わる有望な代替手段はありますか?オープン ソースであり、移植性が高い必要があります。また、同時実行サポートの欠如など、Autotools システムのすべての不足を回避する必要があります (configure スクリプトは非常に遅い)。

4

2 に答える 2

0

autotools と並行してビルドを行うことができます。並行して構築したいものに対して再帰的なmakeを行うことを避ける必要があるだけです。基本的な考え方は、次のMakefile.amようにすることです。

bin_PROGRAMS =
noinst_LDLIBRARIES =
SUBDIRS = sub1 sub2 .
include here1/Makefile-files
include here2/Makefile-files

などhere1/Makefile-files

bin_PROGRAMS += here1
noinst_LDLIBRARIES += libhere1.la
here1_SOURCES = here1/src1.c here1/src2.c here1/src3.c
libhere1_la_SOURCES = here1/lib1.c here1/lib2.c

次に、サブディレクトリ内のものは、現在のディレクトリsub1/sub2/は別に、その前に構築されます (それぞれのビルドが同じトリックで並行して行われる可能性があります!)。次に、現在のディレクトリが現在のディレクトリ内のものの構築を開始します。Makefile.amhere[12]/Makefile-files並行して。

たとえば、いくつかの前提条件が構築された後、libgphoto2そのメカニズムを使用して50 以上のカメラ ドライバーを並行して構築します。これにより、合計ビルド時間が大幅に短縮されます。

OK、これによってconfigureスクリプト自体が高速化されることはありませんが、少なくともクロスコンパイルは実行されます (一部の代替ビルド システムとは異なります)。(要件の 1 つとしてポータブルを挙げていますが、これは多くの場合、クロスコンパイルを意味します。)

于 2009-11-23T12:54:03.790 に答える
0

高度にモジュール化されたプロジェクトにはCMAKEの使用も検討してください。

于 2009-11-23T13:01:09.697 に答える