私のC++プロジェクトにGNU AutoToolsを使用しようとしています。私はconfigure.ac、makefile.amなどを書いています。実行中にプログラムによって使用されるいくつかのファイルがあります。今GNU AutoToolsでのデータディレクトリへのパスの設定と使用
abcdir = $(bindir)/../data/abc/
abc_DATA = ../data/knowledge/abc.cc
次のようにコピーし、正しくファイルと私のプログラムのインストール構造が代に見える::などのテンプレートファイル、XMLスキーマは、だから、私は、実行可能に沿ってこれらのファイルをコピー/インストールするために、私は次のようなものを使用
<installation_dir>/bin/<executableFile>
<installation_dir>/data/abc/abc.cc
ここで問題は、ソースコードでは実際にこれらのファイル(abc.ccなど)を使用しているため、これらのファイルが存在する場所のパスが必要です。 1つの解決策は、(AC_DEFINEを使用して)いくつかの変数を定義することです。 _ABC_PATH_はインストールのパスを指していますが、これを正確に行う方法は?またはそれを行うための良い方法がありますか?
...
ifstream input(<path-to-abc-folder> + "abc.cc"); // how to find <path-to-abc-folder>?
..
AC_DEFINE([ABC_PATH]、["$ {prefix}/data/abc"])を使用しているので、AC_DEFINEでそれを行うことはできますか?ABC_PATH = "$ {prefix}/data/abc "、私は" $ {prefix} "をどうすればいいのですか? – usman
AC_DEFINE_UNQUOTEDはAC_DEFINEと同じように動作しますが、引数をちょうど一度に拡張します**。したがって、通常は$ {prefix}展開で動作しますが、一般的には、シェルの拡張を処理できないソースにパスを挿入するのには適していません。 – thiton
これはサイドノート以上のものでなければなりません:OPは間違いなくdatadir –