2011-08-10 140 views
2

我正在鏈接到一個.a庫,並且需要鏈接到正在編譯的機器的正確版本。有沒有辦法在linux中檢測.pro文件中的機器類型?我發現這篇文章,但他們只討論Windows:http://developer.qt.nokia.com/faq/answer/how_can_i_detect_in_the_.pro_file_if_i_am_compiling_for_a_32_bit_or_a_64_bi任何方式來檢測QT Creator.pro文件中的64位和32位機器?

編輯:.a庫是Gtest。解決我的問題的另一種方法是以某種方式使用g ++構建一個.a文件,該文件可以在32位或64位平臺上使用。那可能嗎?

回答

2

通過對mkspec進行條件處理(請參閱Platform Scope Values here),您可以檢查各種各樣的編譯器/平臺。

我mkspec目錄(LINUX64機),給出了以下分化:

aix-g++/       irix-g++-64/      qconfig.pri      wince50standard-armv4i-msvc2005/ 
aix-g++-64/      linux-cxx/      qws/        wince50standard-armv4i-msvc2008/ 
aix-xlc/       linux-ecc-64/      sco-cc/       wince50standard-mipsii-msvc2005/ 
aix-xlc-64/      linux-g++/      sco-g++/       wince50standard-mipsii-msvc2008/ 
common/       linux-g++-32/      solaris-cc/      wince50standard-mipsiv-msvc2005/ 
cygwin-g++/      linux-g++-64/      solaris-cc-64/     wince50standard-mipsiv-msvc2008/ 
darwin-g++/      linux-g++-maemo/     solaris-cc-64-stlport/   wince50standard-sh4-msvc2005/ 
[email protected]       linux-icc/      solaris-cc-stlport/    wince50standard-sh4-msvc2008/ 
features/       linux-icc-32/      solaris-g++/      wince50standard-x86-msvc2005/ 
freebsd-g++/      linux-icc-64/      solaris-g++-64/     wince50standard-x86-msvc2008/ 
freebsd-g++34/     linux-kcc/      symbian/       wince60standard-armv4i-msvc2005/ 
freebsd-g++40/     linux-llvm/      symbian-abld/      wince60standard-x86-msvc2005/ 
freebsd-icc/      linux-lsb-g++/     symbian-sbsv2/     wincewm50pocket-msvc2005/  
hpux-acc/       linux-pgcc/      tru64-cxx/      wincewm50pocket-msvc2008/  
hpux-acc-64/      lynxos-g++/      tru64-g++/      wincewm50smart-msvc2005/   
hpux-acc-o64/      macx-g++/       unixware-cc/      wincewm50smart-msvc2008/   
hpux-g++/       macx-g++40/      unixware-g++/      wincewm60professional-msvc2005/ 
hpux-g++-64/      macx-g++42/      unsupported/      wincewm60professional-msvc2008/ 
hpuxi-acc-32/      macx-icc/       win32-borland/     wincewm60standard-msvc2005/  
hpuxi-acc-64/      macx-llvm/      win32-g++/      wincewm60standard-msvc2008/  
hpuxi-g++-64/      macx-pbuilder/     win32-icc/      wincewm65professional-msvc2005/ 
hurd-g++/       macx-xcode/      win32-msvc2003/     wincewm65professional-msvc2008/ 
irix-cc/       macx-xlc/       win32-msvc2005/             
irix-cc-64/      netbsd-g++/      win32-msvc2008/             
irix-g++/       openbsd-g++/      win32-msvc2010/             
+0

我不知道爲什麼你downvoted,因爲你的答案工作pe rfectly。我使用了基於你的表格的「linux-g ++ -64:LIBS + = libgtest64.a」這一行來檢測我們的64位系統。我繼續前進,並向上支持你。謝謝! –

1

在.pro文件,你可以擁有的東西:

mkspec:VAR += special_spec_var_value 

因此,例如,一種編譯時手臂,鏈接我的觸摸屏庫我這樣做:

linux-arm-g++:LIBS += -lts