2016-06-11 244 views
1

我有以下目錄結構:有沒有辦法避免使用nobase進行遞歸?

Makefile.am 
src/ 
    mymod/ 
     mod.cc 
     submod/ 
      submod.cc 
inc/ 
    Makefile.am 
    mymod/ 
     mod.hh 
     submod/ 
      submod.hh 

使用自動工具,我想同時分配從src製成圖書館和inc頭。頂級Makefile.am看起來像

lib_LTLIBRARIES = mylib.la 
mylib_la_SOURCES=./mymod/mod.cc\ 
       ./mymod/submod/submod.cc 
SUBDIRS=inc 

然後inc/Makefile.am

mymod_includedir=$(includedir) 
nobase_mymod_include_HEADERS=mymod/mod.hh\ 
          mymod/submod/submod.hh 

該工程確定。我結束了任何庫的東西,我的頭文件得到適當的安裝。但是,我想消除Makefile中涉及的遞歸。問題是,如果我移動線inc/Makefile.am到根目錄下,然後我有如下更新路徑:

mymod_includedir=$(includedir) 
nobase_mymod_include_HEADERS=inc/mymod/mod.hh\ 
          inc/mymod/submod/submod.hh 

這導致我的頭被情人拋棄的$PREFIX/include/inc/mymod/mod.hh,而不是像$PREFIX/include/mymod/mod.hh我想。我知道我 可以做類似

mymodincludedir=$(includedir)/mymod 
mymod_HEADERS=inc/mymod/mod.hh 

mysubmodincludedir=$(includedir)/mymod/submod 
mysubmod_HEADERS=inc/mymod/submod/submod.hh 

但是這是很痛苦的,因爲有一個很多子目錄和多個子目錄,子目錄中(我們分發第三方的代碼,我們自己的頭需要) 。我希望能夠做的是告訴automake只複製/inc$(includepath)的目錄以及它遇到的每個子目錄,或者告訴它只從我列出的頭文件中刪除部分路徑。這可能嗎?

回答

0

我認爲最接近你可以找到的是卡雷爾扎克的Makemodule.am approach其中nobase_將工作,因爲你需要。

+0

你能詳細說一下嗎? Makemodule.am方法已經是我正在使用的方法。我如何使用nobase_這種方式?根據我的理解,我仍然需要指定完整的路徑,所以我仍然遇到與我的問題中提到的相同的問題。 – jonthalpy

相關問題