如何将 Qt 库连接到标准 C++ 项目?

Posted

技术标签:

【中文标题】如何将 Qt 库连接到标准 C++ 项目?【英文标题】:How to connect Qt libraries to standard C++ project? 【发布时间】:2016-03-24 10:54:40 【问题描述】:

我在 Linux Mint 上工作,并在 Eclipse IDE 中创建了标准 C++ 项目。我想使用 Qt 库编写一些 GUI 应用程序,但我不太清楚如何附加该库。

对于 GCC C++ 编译器,有以下标志: -I(包含头文件的路径,如果我理解正确,编译器在搜索由-include标志指定的头文件时会在这些目录中查找) -include(实际的头文件)

对于 GCC C++ 链接器: -l(库,例如 *.so 库) -L(库搜索路径,链接器在搜索-l标志指定的库时会在这些目录中查找)

这对吗?

现在...

/usr/lib $ ls | grep qt
The output is:
libindicate-qt.so.1
libindicate-qt.so.1.4.1
libntrack-qt4.so.1
libntrack-qt4.so.1.0.1
libpolkit-qt-agent-1.so.1
libpolkit-qt-agent-1.so.1.103.0
libpolkit-qt-core-1.so.1
libpolkit-qt-core-1.so.1.103.0
libpolkit-qt-gui-1.so.1
libpolkit-qt-gui-1.so.1.103.0
libsignon-qt5.so.1
libsignon-qt5.so.1.0
libsignon-qt5.so.1.0.0
libsignon-qt.so.1
libsignon-qt.so.1.0
libsignon-qt.so.1.0.0
libsvnqt.so.7
libsvnqt.so.7.0.1

在目录 /usr/include/qt5 中还有多个其他目录,每个目录都有一些头文件,例如:

/usr/include/qt5/QtConcurrent $ ls
QtConcurrent                qtconcurrentfilter.h            QtConcurrentMap             QtConcurrentRun                   QtConcurrentVersion
qtconcurrentcompilertest.h  qtconcurrentfilterkernel.h      qtconcurrentmap.h           qtconcurrentrunbase.h             qtconcurrentversion.h
QtConcurrentDepends         qtconcurrentfunctionwrappers.h  qtconcurrentmapkernel.h     qtconcurrentrun.h
qtconcurrentexception.h     qtconcurrent_global.h           qtconcurrentmedian.h        qtconcurrentstoredfunctioncall.h
QtConcurrentFilter          qtconcurrentiteratekernel.h     qtconcurrentreducekernel.h  qtconcurrentthreadengine.h

我的问题是如何在其中包含标题和库。我想包含 /usr/include/qt5/ 下面的所有头文件以及 /usr/lib 中的所有 Qt 库。

换句话说..每个标志后面应该有什么字符串: -I, -include, -l, -L ?

提前致谢。希望这个问题有意义。

【问题讨论】:

您可以配置 Eclipse 以与 cmake 一起使用。然后您可以将 Qt 与 cmake 一起使用。这不像使用 qmake 那样容易,但它确实有效。甚至有一些来自 Qt 的 documentation 关于它。 【参考方案1】:

编译 Qt 项目需要运行 preprocessor moc 来转换所有 Qt 信号/插槽。这个预处理器可以由qmakecmake 运行。从Qt no longer maintains a plugin for Eclipse开始,如果真的要使用Eclipse,需要先配置Eclipse使用cmake,再配置cmake调用moc。 MalaKa 已经为您提供了link about some documentation from Qt。

但是,如果您打算使用 Qt 进行开发,我强烈建议您放弃 Eclipse,转而使用 Qt Creator,这是一个很棒的 IDE,并且具有调用 qmake 的内置机制。

【讨论】:

qmake 对于构建 Qt 代码根本不是必要的。还有其他工具,例如 CMake,可以很好地应对 Qt 的预处理步骤。 我的意思是moc。我已经完善了答案。感谢您指出。

以上是关于如何将 Qt 库连接到标准 C++ 项目?的主要内容,如果未能解决你的问题,请参考以下文章

使用 websocketpp 库连接到 c++ websocket 服务器

使用 wt c++ 库连接到 postgresql 数据库时出现异常?

如何使用 sapnwrfc 库连接到 SAP?

如何从 C++ 端连接到 QML 项目的 onClick 事件

无法将 Github 组织存储库连接到 AWS Amplify 应用程序

在 C++ 项目中包含 .idl 文件