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

C++ 是否可以使用.pro文件基于计算机体系结构动态包含共享对象?,c++,qt,C++,Qt,我目前正在与一位同事开发一个QT应用程序。此应用程序的特定部分需要使用第三方库。因为我们只需要这个库的一小部分,所以我们决定在项目中包含一个.so文件,以避免不必要地将文件传输到存储库。但最近我们遇到了麻烦,因为我们有不同的体系结构(32位和64位),所以.so文件基本上是无用的。既然我们有这些.so文件,那么是否可以同时包含这两个文件,并且在构建项目时,动态检测它所构建的体系结构并包含适当的共享对象文件 我无法理解的部分是识别.pro文件中的体系结构。我在上找到了这个答案,但正如有人评论的那样

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

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


我们还考虑过将第三方库源代码的tarball打包到应用程序中,但我们认为在用户使用我们的程序之前要求用户自己编译库是“不友好的”。我们一致认为,如果可能,该计划应尽可能独立。谢谢你读这篇文章

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

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

谢谢你的回复!我已经研究过使用QMAKE_HOST.arch,但在我上面的链接中,它说这个解决方案只适用于windows?不知道他们为什么会这么说。它适用于64位Ubuntu和32位Win7。埃塔:我明白为什么现在,他们有“win32 msvc*:”作为规则的一部分。请注意,我上面的例子没有这个。谢谢!成功了。我们注销了它,因为有评论说它只是Windows。谢谢你的帮助!