2016-04-27 39 views
8

我在子目錄中有一些頭文件,必須將它複製到我的include目錄中的同名子目錄。我可以使用nobase將前綴要做到這一點(我與heimdal的代碼工作的,僅供參考):如何在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的必須的頭前建成文件存在),所以我需要使用nodist前綴,以使dist不會消失。

I found an article是說我可以一起使用這兩個,甚至提供了一個類似的例子,所以我這樣做:

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

我沒有看到任何警告或錯誤,但這些頭文件沒有得到複製到我的包含目錄。 我做錯了什麼,或者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(這是工作)。也許這兩個定義造成某種衝突?

我剛剛嘗試刪除nodist_include_HEADERS並將所有我的標題放在nobase_nodist_include_HEADERS行下,但是現在無我的標頭安裝。

automake和系統信息: 的automake(GNU的automake)1.13.4的openSUSE 13.2(x86_64的)

+0

請給問題本身添加任何附加信息,而不是濫用一些評論。 –

+0

請做一個完整的工作示例http://stackoverflow.com/help/mcve(在你的情況下,一小段Makefile.am) –

回答

3

如果是由程序生成的標題,你應該BUILT_SOURCES紀念他們,這樣automake不會被迷惑嘗試將它們安裝爲dist

其次,對於不打算安裝的頭文件,最好使用SOURCES指令,而不是HEADERS。試試這個:

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