2016-12-14 5 views
0

私の会社は、特定のヘッダーファイルとライブラリを標準ではない(ただし変更されていない)場所に保管しています。Autotools AM_CPPFLAGS(など)は無視されますか?

ビルドにヘッダーパスを追加しようとしています。環境変数CPPFLAGSを定義すると、ヘッダー検索パスを追加でき、ヘッダーが見つかります。しかし、configure.acやsrc/Makefile.amの中から検索パスを設定しようとしても失敗しました。 SRC/Makefile.amで

私は

AM_CPPFLAGS = -I/path/to/headers 

を試してみましたが、しかし、ヘッダが見つかりません。私はconfigure.acとMakefile.amにCPPFLAGSを設定しようとしましたが、うまくいきません。私はむしろ、設定する必要はありませんと思い、私はのsrc/Makefile.amに

main_CPPFLAGS = -I/path/to/headers 

を試してみた単一引用符、また運

ととせずに

AC_SUBST(CPPFLAGS, ['-I/path/to/headers']) 

を試してみました環境変数。それは、ビルドシーケンス(とドキュメンテーション)への余分な指示と余分なステップを必要とするでしょう。私の欠点は何ですか?

補遺

私はARMのホスト(ないiOS版)のためのMacOS上でクロスコンパイルだことを言及することを怠っ。

src/Makefile.amのサニタイズ版です。現時点では、いくつかの可能性があります。コンパイラに-Iフラグを渡すことはありません。 CPPFLAGS環境変数をに設定すると、はコンパイラに-Iフラグを取得します。

SUBDIRS = . 
bin_PROGRAMS = main 
main_SOURCES = first.h second.h main.cpp 
main_LDADD = -lone -ltwo 
main_CPPFLAGS = -I/path/to/headers 
AM_CPPFLAGS = -I/path/to/headers 
INCLUDES = -I/path/to/headers 
+0

あなたの 'AM_CPPFLAGS = -I/path/to/headers'は正しいです。-Iオプションをコンパイラに渡すべきです。私が考えることのできる唯一の理由は、あなたのautomakeのバージョンが非常に古くなったとき、あるいはクロスコンパイルしたものが、私が慣れ親しんだものとは違う振る舞いをするからです(私は十字のためにオートツールを使用しませんでしたまだコンパイルしていない)。 –

答えて

0

ビルドシステムは、公開することになっている場合は、あなたのMakefile.amでパスをハードコードしないでください。代わりに、それは内部ビルドはなら

あなたが望むソリューションは、私が...コメントに引用符を置くことができないので、レムがここにこれを追加し

INCLUDES = -Ipath/to/headers 
+0

完全に内部です。内部的に私たちのための標準的な場所。残念ながら、これはsrc/Makefile.amに置かれてもうまくいきませんでした。それはあなたが意図した場所ですか?私はMacOS上で(iOSではなく)ARM用にクロスコンパイルしていると言わざるを得ない。私はVirtualBoxでLinux上で構築しようとするかもしれません。 – garyp

+0

ああ、変わって、INCLUDESは動作するようになっていますが、コンパイラが何をしているのかわかりません。-I $パスがコンパイラにまったく渡されているかどうか確認できますか? 'Makefile.am'のサンプルを適切に名前を付けることができますか? –

+0

コンパイラの呼び出しでインクルードされたパスが表示されません。しかし、環境変数を設定すると*表示されます。私はMakefile.amを投稿します – garyp

0

です。あなたのMakefile.amは正式に次のようになります:「」私はトップにAM_CPPFLAGSを移動し、SUBDIRSを削除

AM_CPPFLAGS = -I/path/to/headers 
bin_PROGRAMS = main 
main_SOURCES = first.h second.h main.cpp 
main_LDADD = -lone -ltwo 

、それらのものは、私の目を傷つけるので。

関連する問題