【问题标题】:Eclipse, QT and "C++ project": is it possible?Eclipse、QT 和“C++ 项目”:有可能吗?
【发布时间】:2011-12-08 04:35:38
【问题描述】:

需要你的帮助:

我想在不创建“Qt gui 项目”的情况下使用 Eclipse CDT 和 QT。可能吗?如何将 QT 库包含到我的 C++ 项目中,以及如何调用 qmake/make 来编译程序?这个Similar question 对我没有帮助(

我想使用“C++ 项目”而不是“QT Gui 项目”,因为 QT 项目中的外部库索引存在问题 (this problem)

非常感谢! 尼古拉。

【问题讨论】:

  • 为什么您链接的问题对您没有帮助?

标签: eclipse qt qmake eclipse-cdt


【解决方案1】:

我们使用 Qt 和供应商定制版本的 Eclipse (Momentics) 和 CDT 做了类似的事情。为了让它工作,我们最终在 Eclipse 中使用我们自己的手动生成的 Makefile 创建了一个通用的 makefile 项目。

手工生成的 Makefile 基本上包含足够的信息,可以在适当的 .pro 文件(“qt.pro”)上调用 QMake,然后调用生成的 Makefile(“qtmake.mk”)。

all: qtmake.mk
    $(MAKE) -f qtmake.mk

qtmake.mk: qt.pro
    qmake -r -o qtmake.mk qt.pro

clean: qtmake.mk
    $(MAKE) -f qtmake.mk clean

install: qtmake.mk
    $(MAKE) -f qtmake.mk install

【讨论】:

  • 但是你从哪里得到 .pro 文件?如果您也有自定义的大型手写 Makefile(遗留的必须支持项目),它将如何改变?
  • @Roman,.pro 是您正在使用的 qt 项目的一部分。它可以从源代码qmake -project 生成,在 Qt Creator 中创建,或者只是手写。
【解决方案2】:

这样做很麻烦,我建议你不要这样做。我只在小型项目上尝试过。

据我所知,您必须自己编写正确的 Makefile(或设置 CDT 来创建它),方法是包含 Qt 标头所需的所有包含路径。然后你必须链接到你的项目正在使用的所有 Qt 库。

如果您使用 Qt 元对象系统,您必须在编译和链接之前运行 moc。 moc 生成您必须链接到其他源的 C++ 源。如果你正在使用 GNU make,我猜你是,似乎可以自动化 moc,在 Makefile CDT 中编写正确的指令将创建。有关详细信息,请阅读:http://doc.qt.io/qt-5/moc.html#writing-make-rules-for-invoking

顺便问一下,你们不能用Qt Creator吗?

【讨论】:

  • 感谢您的回答!我将 /usr/include/qt4 添加到项目包含中,但 make 返回错误“QtGui:没有这样的文件或目录”(main.cpp)......因此,我什至无法获取 Makefile......这似乎是真的很麻烦,你说得对)。我可以使用 QT Creator,但是我非常喜欢 Eclipse 和一些 Eclipse 插件。
  • 注意插入正确的包含路径。通常 /usr/include/qt4 不包含所有标题。此外,该错误似乎表明 Makefile 中有一个简单的错误。无论如何,我一直在使用 Eclipse 和 Qt,但我发现 Qt Creator 更好。
  • 哦...我希望存在其他解决方案(可能是其他集成插件)...好吧,让我们的提示将是“答案”)
  • 不确定@MTuner 是否解决了include 问题,但正如@Luca Carlon 指出的那样,需要精确的路径。例如,我需要 /usr/include/{ qt4, qt4/QtCore, qt4/QtGui } 来编译本教程中最简单的 GUI 程序 (goo.gl/W8ssQ)。
  • 顺便说一句 @Luca Carlon,我发现这(即使用 Eclipse 中的 Qt 不制作 QtGui 项目)并没有那么麻烦 - 相反,我认为通过使用引用库需要很正常的步骤用于配置包含和链接库的 Eclipse 的 GUI(无需自己操作 Makefile)。我已经安装了诺基亚的 Qt Eclipse 插件,但我认为我的项目没有利用该插件,因为它不是 QtGui prj。
【解决方案3】:

这很容易使用 Netbeans,因为 qt 已集成在 c++ 项目中。

但是如果你使用 Eclipse,就像我的情况,你可以按照以下两个步骤(对于 linux 用户):

  1. 包含带有 Qt 标头的目录,例如 /usr/include/qt4/Qt。
  2. 从包含 Qt 宏的头文件生成 moc 文件,例如 Q_OBJECT。这可以在构建过程之前在项目目录中使用以下命令来完成: 找 。 -name ".h" | sed 's/(.)(/)(.*)(.h)/moc-qt4 -D & -o \1\2moc_\3.cpp/' |嘘

你必须在哪里定义你想要的。只需运行一次,或者在项目目录中使用以下命令: 找 。 -name "moc_*.cpp" -exec -rm -f {} \;

  1. 构建您的项目。

对了,你试过qt插件吗?

J.

【讨论】:

    【解决方案4】:

    这是 jwernerny 的 makefile 的改进变体:

    first: all
    
    all clean distclean install uninstall: qtmake.mk
        $(MAKE) -f qtmake.mk $@
    
    qtmake.mk: *.pro
        qmake -r -o qtmake.mk $<
    
    .PHONY: first all clean distclean install uninstall
    

    什么时候复制到另一个项目,不应该编辑,实际上是相同的规则合并为一个。

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多