2

我目前正在与同事一起开发 QT 应用程序。我这个应用程序的特定部分需要使用第三方库。由于我们只需要这个库的一小部分,我们决定制作一个 .so 文件以包含在我们的项目中,以避免不必要地将文件传输到我们的存储库。我们最近遇到了麻烦,但当我们被提醒由于我们有不同的架构(32 位与 64 位)时,.so 文件基本上没用。由于我们有这些 .so 文件,是否可以同时包含这两个文件,并且在构建项目时动态检测它正在构建的架构并包含适当的共享对象文件?

我无法弄清楚的部分是识别 .pro 文件中的架构。我在qt forums上找到了这个答案,但正如有人评论的那样,这个解决方案仅在 Windows 上可用。我还找到了关于使用环境变量 $MACHTYPE 来检测架构的建议,但如果我没记错的话,那是一个仅限 linux 的解决方案。是否有一种真正的跨平台检测架构的方法?

我们也考虑过将第三方库源的 tarball 打包到应用程序中,但我们认为要求用户在使用我们的程序之前自己编译库是“不方便用户的”。我们同意,如果可能的话,这个程序应该尽可能独立。感谢您阅读本文!

4

1 回答 1

2

我现在正在做同样的事情。Qt SDK 1.2 有 QMAKE_HOST.arch

contains( QMAKE_HOST.arch, x86_64 ) {
   LIBS += 64bitlib.a
}
else {
   LIBS += 32bitlib.a
}    
于 2012-04-30T20:47:35.380 回答