【问题标题】:How to set install directory depending on compiler?如何根据编译器设置安装目录?
【发布时间】:2018-03-16 13:04:45
【问题描述】:

我非常简单的X.pro 文件如下所示:

TEMPLATE = lib

CONFIG += c++14 warn_on

HEADERS += x.hpp

target_headers.path  = $$[QT_SYSROOT]/usr/include/
target_headers.files = x.hpp
INSTALLS += target_headers

target_libs.path  = $$[QT_SYSROOT]/usr/lib/
target_libs.files = libX.so \
                    libX.so.1 \
                    libX.so.1.0 \
                    libX.so.1.0.0
target_libs.CONFIG += no_check_exist
INSTALLS += target_libs

头文件x.hpp可以留空。

所以,当我这样做时

qmake
make 
make install

标头安装在/usr/include/,库安装在/usr/lib/

当我使用 32 位编译器时这很好用,因为库应该安装在 /usr/lib/ 中,但是当我使用 64 位编译器时就不行了,因为库应该安装到 /usr/lib64/ .

那么,如何更改 pro 文件以配置我的库的去向?有没有办法检测构建是使用 32 位还是 64 位编译器?


另外,这将创建库的 4 个副本,而不是复制链接。如何解决?

【问题讨论】:

    标签: qt qmake


    【解决方案1】:

    检测架构:https://stackoverflow.com/a/30723860/1179842

    contains(QT_ARCH, i386) {
        message("32-bit")
    } else {
        message("64-bit")
    }
    

    创建链接:让qmake为你生成命令:http://doc.qt.io/qt-5/qmake-advanced-usage.html#installing-files

    target.path = $$[QT_SYSROOT]/usr/lib/
    INSTALLS += target
    

    【讨论】:

    • qmake -query QT_ARCH 返回**Unknown**。这正常吗?
    • @BЈовић 是的。运行 qmake -query 以查看所有可用值。如果要检查变量,请在 pro 文件末尾添加此行:message($$QT_ARCH)
    • 不确定target.path = $$[QT_INSTALL_LIBS] 是否可以正常工作,因为它似乎指向正确的目录。
    • 请注意,我认为QT_ARCH 仅适用于 Qt5。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多