【问题标题】:How to make the Qt project file (.pro) platform dependent?如何使 Qt 项目文件(.pro)平台依赖?
【发布时间】:2013-04-26 07:58:39
【问题描述】:

有没有办法使用 Qt-Creator 根据操作系统包含不同的库?

换句话说,.pro 文件中是否有以下行的等效项:

#ifdef Q_WS_WIN
include(C:/myProject/myLybrary/my-lib.pri)
#endif

#ifdef Q_WS_X11
include(/home/user/myProject/myLybrary/my-lib.pri)
#endif

我知道字符“#”标识 .pro 文件中的注释。这里有什么替代方案?

【问题讨论】:

标签: qt include qt-creator conditional-compilation projects-and-solutions


【解决方案1】:

你试过这个吗:

unix: include(/home/user/myProject/myLybrary/my-lib.pri)
win32: include(C:/myProject/myLybrary/my-lib.pri)

【讨论】:

    【解决方案2】:

    你也可以这样使用它(如果有多个文件):

    linux-g++ | linux-g++-64 | linux-g++-32 {
     # your includes
    }
    
    win32 {
     # your includes
    }
    

    【讨论】:

    • 你可以用linux-g++*代替linux-g++ | linux-g++-64...
    【解决方案3】:

    我相信你所说的操作系统是指你正在编译的目标架构。这就是 .pro 文件运行的上下文,它可能与您正在开发的主机的操作系统的架构相同,也可能不同。

    您可以根据您正在编译的 qmake 规范在 .pro 文件中指定条件表达式。例如,如果您只想在为嵌入式 Linux 架构进行编译时包含一些库,那么您可以输入:

    linux-oe-g++ {
        LIBS += -lsomelib
        HEADERS += SomeClass.h
        SOURCES += SomeClass.cpp
    }
    

    这些行只会在linux-oe-g++ 用作 qmake 的 -spec 参数时生效。 (这是在 Qt Creator IDE 中通过将项目配置为使用具有“Qt makespec”字段中指定平台的工具包来设置的。)

    类似于以下 C++ 代码的预处理器指令确实取决于您正在开发的操作系统:

    #ifdef __linux__
    #include "linux/mylinuxlib.h"
    #endif
    

    此条件取决于环境,并且仅当我在 Linux 操作系统上开发时才成立。它不依赖于我正在编译的目标架构。

    【讨论】:

      【解决方案4】:

      或者如果你喜欢交叉编译:

      linux-g++-64{
      # your includes
      }
      
      linux-arm-g++{
          # your includes
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-09
        • 2020-02-04
        • 2013-12-21
        • 2021-08-12
        相关资源
        最近更新 更多