2012-04-10 80 views
1

在使用Fortran開發靜態庫的情況下:具有許多模塊的靜態庫

該庫由多個模塊組成,例如, 「模塊a」,「模塊b」等。

每個模塊都有公共變量,類型和過程。

現在,想在程序「測試」中使用lib。

一種可能的方法是使用每個模塊,並在鏈接期間提供* .a lib文件。例如:

program test 
    use a 
    use b 
    ... 
end program 

但是,如果只需要使用/包含一個模塊/ * .h會更好。例如: -

program test 
    use all 
    ... 
end program 

一個可行的辦法是將所有的公共變​​量,類型和程序界面複製到「模塊的所有」,並使用「模塊的所有」,而不是單獨的模塊。

但是,如果修改了單個模塊中的任何一個,則「模塊全部」也需要修改以符合更改。

是否有更合適的解決方法,或者是否有自動生成「模塊全部」的工具?

非常感謝您的任何輸入。

回答

3

我不會將單個模塊中的代碼複製到模塊「全部」中,因爲如您所說,當代碼發生更改時會導致額外的工作。錯誤的可能性。相反,在模塊「全部」中使用這些模塊。然後,當你想讓他們都「使用模塊全部」。當你想要一個特定的模塊時使用那個模塊。因爲它被禁止,所以必須注意的是循環模塊引用:A使用B使用C使用A不允許。

+0

是的,那將是最好的。我花了很長時間才意識到,如果我不使用'private',我現在使用盡可能多的,那麼導入的模塊符號會再次導出。 – 2012-04-10 08:57:37

+0

謝謝你的回答。因此,需要在包含文件夾中提供所有單獨的模塊。所有使用的單獨模塊都需要使用驅動程序進行編譯,這使得* .a幾乎無用。是對的嗎? – mianzhi 2012-04-10 12:51:28