从日食中改变QMAKESPEC?

时间:2011-01-05 17:17:03

标签: eclipse qt eclipse-plugin qmake

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

由于机器是64位,QMAKESPEC默认是linux-g ++ - 64,即使我将qt库切换到32位版本,g ++仍然输出64位目标文件 - 我无法与其他32位库链接。我知道可以导出QMAKESPEC环境变量,并且可以在shell中运行,但是可以在eclipse中执行此操作吗?那么当我在eclipse中运行qmake时,会应用适当的QMAKESPEC吗?

提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

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”下的Project Properties中设置为环境变量。

IIRC,我在这里发现的一个大问题(我提交了一个错误报告)是,更改其他属性会导致QMAKESPEC自动“更正”回到另一个值。实际意义是,在单击“确定”关闭“属性”对话框之前,需要确保它是最后设置的内容。

答案 1 :(得分:0)

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

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

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