「./configure」などで管理されているプロジェクトからサブディレクトリを移動すると、「../../configure.ac」などに到達しようとし、簡単にビルドできません。
そのようなプロジェクトの一部を抽出して独立させる方法は?
これに対処するには 2 つの方法があります。別の自動ツール ビルド プロセスを作成するか、自動ツールとハンド コードを廃止するか、新しいMakefile
.
私のプロジェクトフー | | +-- ソース | | +-- 男 | | +-- メッセージ | | +-- ライブラリ | | +-- 含める | | +-- その他
という架空のプロジェクトについては、上の図を見てmyprojectfoo
くださいfoo
。最上位のディレクトリmyprojectfoo
にはconfigure.ac、Makefile.am、Makefile.inがあり、サブディレクトリには少なくともMakefile.amとMakefile.inがあります。自動ツールは、make コマンドを作成して実行し、プロジェクトをビルドします。
今、あなたがやろうとしていることで私が理解していることから:
私のプロジェクトフー | | \ / +-- sXc | | / \ +-- 男 | | +-- メッセージ | | +-- ライブラリ | | \ / +-- 含む | | / \ +-- その他
src
サブディレクトリを取り出したいのですが、それinclude's
もそうです。その場合、別の Makefile ( read - no auto-tools ) ビルドを作成する方が簡単です..その場合、簡単です。
私が考えることができる最善の方法は、最終的にその決定を下す必要があることです。抽出したいプロジェクトのソースのサブセットの大きさはどれくらいですか。それを進めたら、 Makefile.am、 Makefileへのすべての参照を削除します。 in ... 既存の単純な Makefile テンプレートを借りてビルドし、このように呼び出します
make -f MyMakefile
また
自動ツールを使用してそのサブセットを使用して別のプロジェクトをビルドする場合:
Makefile.am
以下に示すように、ベアボーンを作成します。configure.ac
以下に示すように、ベアボーンを作成します...configure.ac
configure.ac
ます。これにより、 automake、autoconf、およびその他のサポートされている自動ツール プログラムが実行されます。Linux 用のサンプルを取得してMakefile.am
います...
サブディレクトリ = src インクルード ACLOCAL_AMFLAGS = -I m4
Linux 用のサンプルを取得してconfigure.ac
います...
AC_PREREQ(2.63) AC_INIT([mysubsetprojectfoo], [0.1a], [foo@bar.baz]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([-Wall -Werror]) AM_GNU_GETTEXT_VERSION([0.17]) AM_GNU_GETTEXT([外部]) AM_CFLAGS= # プログラムをチェックします。 AC_HEADER_STDC AC_PROG_CC AC_ARG_ENABLE([デバッグ], [ --enable-debug デバッグを有効にする], [case "${enableval}" in はい) debug=true ;; いいえ) デバッグ = false ;; *) AC_MSG_ERROR([--enable-debug の不適切な値 ${enableval}]) ;; esac],[debug=false]) AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) # ライブラリをチェックします。 AC_CHECK_LIB([mylib], [mylib_function], [:]) if test "$mylib" = :; それから AC_MSG_ERROR([MyLib がありません。\ これは「http://www.foo.baz」からダウンロードできます]) フィ AC_CONFIG_HEADERS([config.h]) # ヘッダー ファイルをチェックします。 # FROM ソース ディレクトリで 'autoscan' を実行 AC_CHECK_HEADERS([arpa/inet.h fcntl.h libintl.h locale.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h syslog.h unistd.h]) # typedef、構造、およびコンパイラの特性をチェックします。 AC_C_INLINE AC_C_CONST AC_TYPE_SIGNAL AC_TYPE_PID_T AC_TYPE_UID_T AC_TYPE_SIZE_T # ライブラリ関数をチェックします。 AC_FUNC_FORK AC_FUNC_MALLOC AC_CHECK_FUNCS([atexit inet_ntoa memset regcomp socket strdup strerror]) AC_CONFIG_FILES([メイクファイルソース/メイクファイルインクルード/メイクファイル]) AC_OUTPUT
auto-tools のコマンドは、私の頭の一番上にあり、何かを見逃している可能性があります。この投稿の最後にコメントを付けて指摘してください。それに応じて修正されます。