QT 5.5.1 删除了 -universal 选项:无法在 MAC 上创建通用二进制文件

Posted

技术标签:

【中文标题】QT 5.5.1 删除了 -universal 选项:无法在 MAC 上创建通用二进制文件【英文标题】:QT 5.5.1 removed -universal option: no way of creating universal binaries on MAC 【发布时间】:2015-11-05 10:54:24 【问题描述】:

为什么从./configure 脚本中删除-universal 选项?

如何从源代码创建通用二进制文件? 我可以分别创建 32 位和 64 位框架,如下所示:

1) 64 位 QT 框架

 #Choose platform from qtbase/mkspecs/
./configure  -release -opensource -confirm-license -prefix /tmp/  -nomake tests -nomake examples  -platform macx-clang
 #Only needed QTcore, QTNetwork, QTGui module, so i choose "module-qtbase"
 make -j4 module-qtbase 

在创建 32 位之前将 qtbase/lib/ 复制到某处

2) 32 位 QT 框架

./configure  -release -opensource -confirm-license -prefix /tmp/  -nomake tests -nomake examples  -platform macx-clang-32
 make -j4 module-qtbase 

现在在 32 位 qtbase\lib 和 64 位 qtbase\lib 上使用 lipo 很麻烦。有没有在 MAC 上创建通用二进制文件的新方法?

我还需要支持 32 位。

【问题讨论】:

【参考方案1】:

我必须手动编写如下。 如果其他人提出更好的答案,我会接受他们的。

#This is in qt-everywhere/src/ directory
#Build for 32-bit
./configure -release -opensource -confirm-license -prefix ~/tmp/  -nomake tests -nomake examples -openssl-linked -I $(OPENSSL_INC) -L $(OPENSSL_LIB) -platform macx-clang-32
make

#Backup required 32-bit binaries. I only needed qtbase and plugins
#-R because frameworks contain symlinks
cp -Rf qtbase/lib ../out_32/lib
cp -Rf qtbase/plugins ../out_32/plugins

make clean
./configure -release -opensource -confirm-license -prefix ~/tmp/  -nomake tests -nomake examples -openssl-linked -I $(OPENSSL_INC) -L $(OPENSSL_LIB) -platform macx-clang
make

#Backup required 64-bit binaries.
cp -Rf qtbase/lib ../out_64/lib
cp -Rf qtbase/plugins ../out_64/plugins

cd ..
#creating universal frameworks
FR="QtGui QtCore QtNetwork QtWidgets"
for fr in $FR; do
   rm -rf out/$fr.framework
   cp -Rf out_64/lib/$fr.framework out/
   rm -rf out/$fr.framework/Versions/Current/$fr

   lipo -create -output out/$fr.framework/Versions/Current/$fr \
                        out_32/lib/$fr.framework/Versions/Current/$fr \
                        out_64/lib/$fr.framework/Versions/Current/$fr
done

out 目录包含通用框架。

【讨论】:

以上是关于QT 5.5.1 删除了 -universal 选项:无法在 MAC 上创建通用二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

Qt 5.5.1:找不到 -lGL

在 Ubuntu 14.04 上安装 Qt 5.5.1 - 在终端上抛出 qt.network.ssl 错误

如何使用 Qt 5.5.1 在调试器中查看 QString 值

QT5.5+VS2012

Qt 5.5.1 MSVC 2013,32 位 - LNK1181:无法打开输入文件 'NIDAQmx.lib'

如何在 静态编译的QT 5.5.1 中 使用数据库插件连接 ODBC(调用静态插件)