0

有沒有辦法根據Qt-Creator的操作系統來包含不同的庫?如何使Qt項目文件(.pro)平臺相關?

換句話說,有沒有在.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文件的註釋。這裏有什麼選擇?

+0

「qmake」教程的第一頁顯示瞭如何:http://qt-project.org/doc/qt-4.8/qmake-tutorial.html – cmannett85 2013-04-26 08:42:27

回答

5

你有沒有嘗試過這樣的:

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

您也可以使用它像(如果有多個文件):

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

win32 { 
# your includes 
} 
+3

您可以使用'linux-g ++ *'來代替'linux-g ++ | Linux的克++ - 64 ...' – 2013-11-15 13:58:21

0

或者,如果你喜歡交叉編譯:

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

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

我認爲操作系統是指你正在編譯的目標架構。這是.pro文件運行的上下文,它可能與您正在開發的主機的操作系統架構相同或不同。

您可以在.pro文件中根據您正在編譯的qmake規範指定條件表達式。例如,如果您想包括一些庫只有當你正在編譯爲嵌入式Linux架構,那麼你就放:

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

這些行只會生效時linux-oe-g++被用作-spec參數QMAKE。 (這是在Qt創建者IDE通過配置項目使用具有在「Qt的makespec」字段中指定的平臺的試劑盒設置)

像以下C++代碼預處理指令並取決於操作你正在開發的系統:

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

這個條件是依賴於環境的,只有當我在Linux操作系統上開發時纔是正確的。它不依賴於我正在編譯的目標架構。