【问题标题】:FindQt4 in CMake not recognize flag -m32CMake中的FindQt4无法识别标志-m32
【发布时间】:2012-09-10 07:41:22
【问题描述】:

我尝试在 x86_64 平台 (Fedora16) 上构建 x86 应用程序。在这个应用程序中,我使用的是 Qt,构建系统是 cmake。 在 CMakeLists.txt 我正在使用:

find_package(Qt4 REQUIRED qtmain QtCore QtGui QtWebKit)

include(${QT_USE_FILE})

生成 Makefile 的 cmake 命令如下:

cmake -DCMAKE_CXX_FLAGS="-fpermissive -m32" -DCMAKE_CXX_LINKER_PREFERENCE="-m32" -DCMAKE_EXE_LINKER_FLAGS="-m32" -DCMAKE_SHARED_LINKER_FLAGS="-m32"

所以,编译链接器后找不到兼容的 Qt 库。像这样的错误:

/usr/bin/ld: skipping incompatible /usr/lib64/libQtWebKit.so when searching for -lQtWebKit

没关系。在 /usr/lib64 库中有 x64 平台。 /usr/lib 中的所需库,它们存在!但我不明白,为什么 FindQt4 不能识别平台?该脚本设置了以下变量:QT_LIBRARY_DIR、QT_LIBRARIES 等等。此类变量设置如下:

-- QT_LIBRARY_DIR: /usr/lib64

-- QT_LIBRARIES: optimized;/usr/lib64/libQtWebKit.so;debug;/usr/lib64/libQtWebKit_debug.so;optimized;/usr/lib64/libQtXmlPatterns.so;debug;/usr/lib64/libQtXmlPatterns_debug.so;optimized;/usr/lib64/libQtGui.so;debug;/usr/lib64/libQtGui_debug.so;optimized;/usr/lib64/libQtNetwork.so;debug;/usr/lib64/libQtNetwork_debug.so;optimized;/usr/lib64/libQtCore.so;debug;/usr/lib64/libQtCore_debug.so

我的问题:为什么不 /usr/lib?我该如何解决?

【问题讨论】:

    标签: qt gcc cmake


    【解决方案1】:

    可能是因为 FindQt4 模块对-m32 标志一无所知。

    尝试显式设置QT_LIBRARY_DIR

    【讨论】:

    • 我已经试过了。我已经先完成了,但是什么都没有=(在 FindQt4 脚本中没有像 CMAKE_SIZE_OF_VOID_P
    • 文档说 FindQt4 使用来自PATH env var 的qmake 程序来检测其他所有内容。也许您对 32 位和 64 位 Qt 有单独的 qmake?如果没有,我担心除了手动设置QT_LIBRARIES 之外你无能为力。好吧,您可以在库路径中手动将lib64 替换为lib
    • 非常感谢您的建议!我已经制作了补丁 - 将 lib64 替换为 lib(在变量 QT_LIBRARIES 中)。但是我觉得,不好。所以,每个人都知道,没有什么比暂时的更无限 =)
    猜你喜欢
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2011-11-06
    • 2016-06-08
    • 2014-07-11
    相关资源
    最近更新 更多