c++ - 是否可以使用 .pro 文件动态包含基于计算机体系结构的共享对象?

标签 c++ qt

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

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

我们还考虑过将第三方库源代码的 tarball 与应用程序一起打包,但我们认为要求用户在使用我们的程序之前自行编译库“不方便”。我们一致认为,如果可能的话,该程序应尽可能独立。感谢您阅读本文!

最佳答案

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

contains( QMAKE_HOST.arch, x86_64 ) {
   LIBS += 64bitlib.a
}
else {
   LIBS += 32bitlib.a
}    

关于c++ - 是否可以使用 .pro 文件动态包含基于计算机体系结构的共享对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390180/

相关文章:

c++ - fstream 的奇怪问题

c++ - 在 map 查找中找不到 const char*

c++ - 在 Win7 x64 上编译 Qt 应用程序的最简单方法

c++ - 在特定索引c++/Qt的另一个字符串中插入字符串

c++ - 安卓工作室 3.2 : where is cmake message() output displayed?

c++ - 为什么我的 constexpr 对象不在我的函数内?

python - pyLCIO setMomentum : error const float* in python

qt - 为 QML 组件分配键盘快捷键

javascript - Qt 2D Canvas 和 HTML5 canvas 的行为并不相同

c++ - QDate - 在两个日期之间搜索