2015-07-09 173 views
2

我正在使用premake5在多個平臺上構建複雜的應用程序。我的應用程序鏈接靜態和共享/動態外部庫。 在這種情況下,似乎有很大的構建鏈依賴關係會打破預生成的「gmake」make文件。混合共享庫和靜態庫

案例:

如果混合使用共享和premake靜態庫「鏈接」語句,GCC似乎感到困惑,並期待您的共享庫引用實際上是靜態庫。當它找不到它們時,鏈接階段失敗。這通常是通過用'-Bdynamic'前綴共享庫來處理的。不幸的是,沒有辦法告訴premake5外部鏈接庫是靜態的還是動態的,所以你必須手動修改make文件,這會破壞構建實用程序的目的。

這是一種showstopper。我不認爲你可以在鏈接選項中添加「-Bdynamic」,因爲它必須跟着共享庫列表。

回答

2

似乎gmake動作中的錯誤(或至少缺少功能) 對於這些,最好的方法是轉到Github上的Premake頁面(https://github.com/premake/premake-core)並創建一個新問題。

如果您有時間提供一個小型可複製項目(一個靜態lib項目,一個動態項目和一個應用程序,每個項目都只有1個cpp或一些簡單的東西+預製腳本)並附加到這個問題,它也將非常感激(並更容易處理這個問題^^)

+0

絕對屬於「缺少的功能」。這已經出現了好幾次,不難解決;我根本沒有帶寬來自己解決它。 – starkos

+0

如果沒有別的,我想我可以解決在gcc構建中使用後處理腳本。 – eris0xff

+0

作爲對此的後續。我注意到,如果我手動將靜力學重新組合在一起,然後出於某種原因,我不需要顯式的「-Bstatic」和「-Bdynamic」。我會看看我能否進一步追蹤這一點。 – eris0xff