次: 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
を参照してください.