試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

autoconfで機能の有効/無効を設定するオプションを付けるための記述に関する覚え書き(configureスクリプトの出力例)

autoconfで機能の有効/無効を設定するオプションを付けるための記述に関する覚え書き(メモとコード例)」での記述がユーザの環境やオプション指定によってどのように処理されるのかの参考として、(生成された)configureスクリプトの実行結果を貼り付けることにする。

--enable-libnotify(=yes)指定・正常(libnotify開発パッケージがインストール済み)

$ ./configure (あるいは ./configure --enable-libnotify(=yes))
(中略)
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for GLIB... yes
checking for GTK... yes
checking for LIBNOTIFY... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating po/Makefile.in
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing default-1 commands
config.status: executing libtool commands
config.status: executing po/stamp-it commands
$ grep LIBNOTIFY config.h
#define HAVE_LIBNOTIFY 1
$ grep LIBNOTIFY src/Makefile
LIBNOTIFY_CFLAGS = -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12  
LIBNOTIFY_LIBS = -lnotify -lgtk-x11-2.0 -ldbus-glib-1 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgmodule-2.0 -ldbus-1 -lgobject-2.0 -lglib-2.0  
        $(GTK_CFLAGS) $(LIBNOTIFY_CFLAGS)
cpufreqd_icon_LDADD = $(GTK_LIBS) $(LIBNOTIFY_LIBS)

config.hsrc/Makefileが適切に設定されている。

libnotify無効指定

$ ./configure --disable-libnotify (あるいは ./configure --enable-libnotify=no)
(中略)
checking for GTK... yes
libnotify is disabled
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
(以下略)
$ grep LIBNOTIFY config.h
/* #undef HAVE_LIBNOTIFY */
$ grep LIBNOTIFY src/Makefile
LIBNOTIFY_CFLAGS = 
LIBNOTIFY_LIBS = 
        $(GTK_CFLAGS) $(LIBNOTIFY_CFLAGS)
cpufreqd_icon_LDADD = $(GTK_LIBS) $(LIBNOTIFY_LIBS)

config.hでは「HAVE_LIBNOTIFY」が未定義となり、src/Makefileでは(libnotifyに関する)CFLAGS,LIBSともに空となっている。

libnotifyを使用するように指定したがlibnotify開発パッケージが未インストールの場合(エラー)

$ ./configure (あるいは ./configure --enable-libnotify=yes)
(中略)
checking for LIBNOTIFY... configure: error: Package requirements (libnotify >= 0.4.1) were not met:

No package 'libnotify' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBNOTIFY_CFLAGS
and LIBNOTIFY_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
(異常終了)

何かのパッケージをビルドするためにconfigureスクリプトを実行した際、不足パッケージがあるときにこのようなエラーが出る。例えば

No package 'libfoo' found

と出た場合、/usr/lib(64)/pkgconfig/*1の下にlibfoo.pcがないか、バージョンが要件を満たしていないかのどちらかとなる。

yes/no以外の不正な文字列が値に指定された場合(エラー)

./configure --enable-debug=foo
(中略)
configure: error: bad value for --enable-debug
(異常終了)

「yes」「no」以外はきちんとエラーとして処理している。

関連記事:

使用したバージョン:

  • autoconf 2.63
  • automake 1.10.2

*1:.pcファイルの場所が特殊な場合は環境変数PKG_CONFIG_PATHを「/dir1/dir2/ ... /lib/pkgconfig」のように指定する必要がある