混合共享库和静态库

Mixing Shared and Static Libraries

我正在使用 premake5 在多个平台上构建复杂的应用程序。我的应用程序 links 针对静态和 shared/dynamic 外部库。 在这种情况下,似乎有重要的构建链依赖性会破坏预生成的 'gmake' make 文件。

案例:

如果您在 premake 'link' 语句中混合使用共享库和静态库,GCC 似乎会感到困惑并期望您的共享库引用实际上是静态库。当找不到它们时,link 阶段失败。这通常通过在共享库前加上“-Bdynamic”来处理。不幸的是,没有办法告诉 premake5 外部 link lib 是静态的还是动态的,所以你必须手动修复 make 文件,这违背了构建实用程序的目的。

这有点令人作呕。我认为您不能只将“-Bdynamic”输入 link 选项,因为它后面必须跟共享库列表。

似乎是 gmake 操作中的错误(或者至少是缺少的功能) 对于那些,最好的方法是转到 Github (https://github.com/premake/premake-core) 上的 Premake 页面并创建一个新问题。

并且如果您有时间提供一个小型可复制项目(一个静态库项目、一个动态项目和一个同时使用两者的应用程序,每个项目只有 1 个 cpp 或一些简单的东西 + 预制脚本)并附上它对于这个问题,也将不胜感激(并且更容易处理这个问题^^)