有什么方法可以在QT Creator .pro文件中检测64位与32位机器吗?

时间:2011-08-10 21:05:54

标签: c++ qt qt-creator

我正在链接到.a lib,需要链接到正在编译的机器的正确版本。有没有办法在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

编辑:.a库是Gtest。解决我的问题的另一种方法是以某种方式构建一个带有g ++的.a文件,该文件可以在32位或64位平台上运行。这可能吗?

2 个答案:

答案 0 :(得分:2)

通过对mkspec进行条件化(请参阅平台范围值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/   
default@                          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/                                                   

答案 1 :(得分:1)

在.pro文件中,您可以使用以下内容:

mkspec:VAR += special_spec_var_value

因此,例如,在编译arm时,要链接我的触摸屏lib,我会这样做:

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