2015-07-09 126 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