hack のためのネタ帳, etc,,,

autoconf, automake, libtool の 3 つのツールをあわせた呼び名。
configure スクリプトを自動生成する事で make によるビルドの自動化を可能にする。

Tips

雛形形の生成

autoscan を実行実行すると configure.scan が生成される。

宣言の調査

例えば、Header: WinBase.h (include Windows.h) の GetLastError function は以下のようにすれば調査出来る。

configure.ac

AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER(config.h)
AC_CHECK_DECLS([GetLastError], [], [], [[#include <windows.h>]])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
あとは必要なファイルの追加と初期化した後 configure を実行
touch Makefile.am NEWS README AUTHORS ChangeLog
aclocal && autoheader && automake -a -c && autoconf && ./configure
windows.h ではなく winbase.h を include すると DWORD その他もろもろの宣言が不足するため失敗する。
参考:
以前(version 3 の頃)は gcc に -mno-cygwin オプションを与えれば良かったが、version 4 ではこれが廃止されて、x86_64-w64-mingw32-gcc のようにプレフィックス付きのコンパイラを用いるようになった。
これは基本的にクロスコンパイルあつかいで configure スクリプトに --host オプションで prefix を与えてやれば良いようだ。
例えば以下のようにすれば良い。
$ ./configure --host=x86_64-w64-mingw32
これで、自動的に x86_64-w64-mingw32-gcc 等の prefix 付きのコンパイラが設定される。
何が使えるかは、以下のようにすれば分かると思う。
$ ls /usr/bin/*gcc*
PKG_CHECK_MODULES で要求されたパッケージと、ディストリビューションのパッケージシステムで提供されているパッケージ名は必ずしも一致しない。
PKG_CHECK_MODULES は pkg-config によって必要なパッケージを検索するため、ディストリビューションのパッケージの pkgconfig/ 以下に指示されたパッケージ名を持った *.pc ファイルがないか探せばよい。
例えば、PKG_CHECK_MODULES が gstreamer-pbutils-1.0 を要求していた場合、ディストリビューションのパッケージシステムで gstreamer-pbutils というパッケージを探しても Ubuntu や cygwin では見つからない。この場合、pkgconfig/gstreamer-pbutils-1.0 を検索してやると良い。
例えば、以下のように見つかる。
$ # Ubuntu の場合
$ apt-file search pkgconfig/gstreamer-pbutils-1.0
libgstreamer-plugins-base1.0-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/gstreamer-pbutils-1.0.pc
$ # Cygwin の場合
$ cygcheck -p pkgconfig/gstreamer-pbutils-1.0
Found 6 matches for pkgconfig/gstreamer-pbutils-1.0
libgstinterfaces1.0-devel-1.6.3-1 - libgstinterfaces1.0-devel: GStreamer 1.0 Base Plug-ins (installed binaries and support files)
...

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます