2016-04-27 13 views
8

サブディレクトリにいくつかのヘッダーファイルがあります。サブディレクトリには、includeディレクトリの同じ名前のサブディレクトリにコピーする必要があります。include_HEADERSにautotools nobaseとnodist接頭辞を一緒に使用する方法

nobase_include_HEADERS = hcrypto/aes.h \ 
     hcrypto/bn.h  \ 
     hcrypto/cmac.h \ 
     hcrypto/des.h  \ 
     hcrypto/dh.h  \ 
     hcrypto/dsa.h  \ 
etc... 

をしかしheimdalのは、これらのヘッダの前に構築されなければならないので、それらのヘッダファイルの一部は、(ビルドプロセス中に生成されています。私は(私はFYI、Heimdalのコードで働いている)ことを実現するためにnobase接頭辞を使用することができますファイルが存在するので)、distが死ぬことがないようにnodist接頭辞を使用する必要があります。

nobase_nodist_include_HEADERS = hcrypto/aes.h \ 
     hcrypto/bn.h  \ 
     hcrypto/cmac.h \ 
     hcrypto/des.h  \ 
     hcrypto/dh.h  \ 
     hcrypto/dsa.h  \ 
etc... 

私は警告やエラーに気付かなかったが、これらのヘッダファイルを取得しないでください:私はこれをしなかった、私は一緒にそれらの両方を使用することができると言いました、とさえ同様の例を提供

I found an article私のインクルードディレクトリにコピーされます。 私は何か間違っているのですか、またはautotoolsにバグがありますか?

興味深い、私は接頭辞を逆にすれば、私はこのエラーを取得:

Makefile.am:93: error: 'nodist_nobase_include_HEADERS' is used but 'nobase_includedir' is undefined 

そのエラーの理由はautomake documentationにここで説明されています

‘nobase_’ should be specified first when used in conjunction with either ‘dist_’ or ‘nodist_’

私も(nodist_include_HEADERSを定義しましたそれは働いている)。 2つの定義が何らかの矛盾を引き起こしているのでしょうか?

nodist_include_HEADERSを削除して、すべてのヘッダをnobase_nodist_include_HEADERS行の下に置いてみましたが、今ではヘッダがインストールされていません。

Automakeは、システム情報: automakeの(GNUのautomakeは)1.13.4のopenSUSE 13.2(x86_64版)

+0

いくつかのコメントを悪用するのではなく、質問自体に追加情報を追加してください。 –

+0

あなたのケースでは、Makefile.amの小さなコレクションである、完全な動作例を作りましょう。http://stackoverflow.com/help/mcve –

答えて

3

ヘッダは、プログラムによって生成された場合、あなたはBUILT_SOURCESでそれらをマークする必要があり、このようautomakeは混同されることはありませんそれらをdistとしてインストールしようとします。

第2に、インストールする予定のないヘッダーファイルの場合はHEADERSではなくSOURCESという指示文を使用する方がよいでしょう。これを試してください:

nobase_include_SOURCES += hcrypto/aes.h \ 
    hcrypto/bn.h  \ 
    hcrypto/cmac.h \ 
    hcrypto/des.h  \ 
    hcrypto/dh.h  \ 
    hcrypto/dsa.h 
BUILT_SOURCES = hcrypto/aes.h \ 
    hcrypto/bn.h  \ 
    hcrypto/cmac.h \ 
    hcrypto/des.h  \ 
    hcrypto/dh.h  \ 
    hcrypto/dsa.h 
関連する問題