Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从eclipse中更改QMAKESPEC?_Eclipse_Qt_Eclipse Plugin_Qmake - Fatal编程技术网

从eclipse中更改QMAKESPEC?

从eclipse中更改QMAKESPEC?,eclipse,qt,eclipse-plugin,qmake,Eclipse,Qt,Eclipse Plugin,Qmake,我有一个正在进行的项目,需要能够在linux上编译32位和64位版本。我安装了32位和64位版本的Qt库,并使用eclipse来完成我的工作。在eclipse中,我可以通过project properties中的Qt properties菜单在不同的Qt版本之间切换。我的问题是: 由于机器是64位的,默认情况下QMAKESPEC是linux-g++-64,即使我将我的qt库切换到32位版本,g++仍然输出64位的对象文件,我无法与其他32位库链接。我知道可以导出QMAKESPEC环境变量,该变量

我有一个正在进行的项目,需要能够在linux上编译32位和64位版本。我安装了32位和64位版本的Qt库,并使用eclipse来完成我的工作。在eclipse中,我可以通过project properties中的Qt properties菜单在不同的Qt版本之间切换。我的问题是:

由于机器是64位的,默认情况下QMAKESPEC是linux-g++-64,即使我将我的qt库切换到32位版本,g++仍然输出64位的对象文件,我无法与其他32位库链接。我知道可以导出QMAKESPEC环境变量,该变量在shell中工作,但是在eclipse中可以这样做吗?因此,当我在eclipse中运行qmake时,是否应用了适当的QMAKESPEC


提前谢谢你

如果Qt项目是常规CDT项目,您可以在资源管理器中打开项目属性选择项目,然后点击项目->属性。选择C/C++构建->环境页面并添加环境变量

另一种可能是将-m32标志添加到编译器和链接器中,有效地告诉它生成32位二进制文件,我想这会导致库路径出现一些问题


所有这些都与使用Eclipse/CDT的通用C++项目有关;我不知道Qt项目是如何偏离这种机制的。

在Eclipse really Momentics下使用Qt对多个目标进行交叉编译时,我不得不处理这个问题。我想出了两种不同的方法。第一个是我决定的,但这两个都是

1第一种方法是首先将项目创建为普通的CDT C/C++项目,而不是Qt项目。QMake随后被添加为外部工具运行->外部工具->外部工具配置。。。带有特定于如何运行qmake的参数,例如'-r-unix-spec linux-g++-64 CONFIG++=enableFeature'。QMake外部工具的多个版本用于不同的配置。要在它们之间进行更改,将调用不同的外部工具

这种方法的优点是,它可以非常精确地控制QMake的调用方式和调用时间。缺点是*.pro文件是自动管理的

2我尝试过的另一种方法,我认为有效。。。YMMV参与了一个Qt项目。在这里,QMAKESPEC被设置为环境选项卡下C/C++Make Project下的项目属性中的一个环境变量


IIRC,我在这里发现的一个大问题是,更改其他属性会导致QMAKESPEC自动更正为另一个值。实际含义是,在单击“确定”关闭“属性”对话框之前,您需要确保它是最后一项设置。

谢谢您的建议!不幸的是,在Qt中构建工作的方式与标准Eclipse/CDT不同。不只是使用makefile运行make,而是分为两个阶段。eclipse使用Qt项目文件生成一个带有qmake的makefile。然后在构建时,使用生成的makefile。但是,设置中的环境变量是在构建步骤之前应用的,并且对已包含所有编译器标志的生成文件没有影响。这些编译器标志是因为QGuy而不是Eclipse的C++设置。