2011-11-25 50 views
3

我使用waf(http://code.google.com/p/waf/)構建fortran庫(它也使用一些c代碼)。使用waf構建fortran庫,安裝.mod文件

相應的WScript是這樣的:

def build(bld): 

    bld(
      features = 'fc', 
      source = 'fortran_interface.f90', 
      target = 'fortran_interface.o') 
      #install_path = '${PREFIX}/mod') 
    #bld.install_files('${PREFIX}/mod','fortran_interface.mod') 

    bld(
      features = 'c', 
      includes = '../../include', 
      source = 'init_wrapper.c', 
      target = 'init_wrapper.o') 

    bld(
      features = 'fc fcstlib', 
      use  = 'init_wrapper.o fortran_interface.o', 
      target = 'fortran_interface', 
      install_path = '${PREFIX}/lib') 

呼叫WAF產生看起來是這樣的:

fc: src/fortran/fortran_interface.f90 -> 
    build/src/fortran/fortran_interface.f90.1.o 
    build/fortran_interface.mod 

我希望能夠給.mod文件安裝到${PREFIX}/mod。 我試過install_path,在這種情況下沒有任何效果,或者install_files不起作用,因爲a)它看不到build /目錄,b)因爲如果文件不存在,它會在之前投訴.3。

+0

我也使用waf構建Fortran項目,但是從來沒有試圖在任何地方安裝模塊文件,因此實際上並不知道該怎麼做。我認爲,我認爲最好的做法是在http://groups.google.com/group/waf-users上提出您的問題。托馬斯納吉非常敏感。 – haraldkl

+0

我已將我的問題發佈到所述組。如果我得到任何答案,我會更新這篇文章。 – imbaer

回答

3

至於這個線程(http://groups.google.com/group/waf-users/browse_thread/thread/c771a2f4fedd4e3?pli=1)的答案是建立

  • 單獨構建組

    bld.add_group()

  • ,並使用

    bld.srcnode.find_or_declare(<filename>.mod)

,使在mod文件生成目錄WAF的樣子。