我正在链接到.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位平台上运行。这可能吗?
答案 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