次: autom4te.cache, 前: Why Not Imake, 上: FAQ
#defineで定義する方法は?
プログラムは,datadirやそれに似た場所にインストールされているライ
ブラリファイルが必要です.以下を使用した場合です.
AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
[Define to the read-only architecture-independent
data directory.])
以下のようになりました.
#define DATADIR "${prefix}/share"
既に説明しているので,この動作は目的通りで,GNU Coding Standardsでも強制されています.Installation Directory Variables を 参照してください.同様の目的を達成するため,いくつかの手段があります.
AC_DEFINEを使用せず,コンパイルフラグでdatadirの実際の値を
渡すMakefileを使用してください.詳細は,Installation Directory Variablesを参照してください.
CPPFLAGSを拡張してもかまいません.
CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@
または,そのためのヘッダファイルを作成します.
DISTCLEANFILES = datadir.h
datadir.h: Makefile
echo '#define DATADIR "$(datadir)"' >$@
AC_DEFINEを使用しますが,configureにdatadirとそ
の他のリテラル値を計算させます.多くの人々は,ラッパーマクロでこの作業を
自動的に実行させています.例えば,
Autoconf Macro Archive
のマクロAC_DEFINE_DIRです.
この解決方法は,GNU Coding Standardsに準拠していません.
prefixからの相対パスを計算し,実行時にprefixを見つけてもよ
く,こうするとパッケージが移動可能になります.この問題を解決するために既
に利用可能なマクロもあります.
Autoconf Macro Archive
のadl_COMPUTE_RELATIVE_PATHSと
adl_COMPUTE_STANDARD_RELATIVE_PATHSを参照してください.