我在这个项目中将 QT5 克隆放在哪里
Posted
技术标签:
【中文标题】我在这个项目中将 QT5 克隆放在哪里【英文标题】:Where do I put the QT5 clone in this project 【发布时间】:2021-06-23 16:53:41 【问题描述】:这是我第一次使用 C++,所以请放轻松。我有大约 7000 小时的 Python 经验,所以我并非完全一无所知。我正在尝试阅读为此处找到的 Colllatinus 软件编写的代码。 collatinus。初始文件好像是这样的:
VERSION = "11.2"
DEFINES += VERSION=\\\"$$VERSION\\\"
DEFINES += MEDIEVAL
TEMPLATE = app
TARGET = collatinusd
INCLUDEPATH += . src
DEPENDPATH += .
DESTDIR = bin
OBJECTS_DIR= obj/
MOC_DIR = moc/
QMAKE_DISTCLEAN += $$DESTDIR/collatinus
CONFIG += console
CONFIG -= app_bundle
CONFIG += release_binary
QT += core
QT -= gui
QT += xmlpatterns
QT += network
我已经从qt 下载了qt
并获得了开源qt5。现在我不知道把文件放在哪里。我已经尝试将它放在与上述代码相同的文件夹中。我也尝试放入标记为src
的文件夹。在src
文件夹中,有许多使用 QT 的文件,但似乎这些文件应该从 QT 文件夹中取出。例如,在this 文件中,我们在第 28 行有语法
#include <QDebug>
QDebug 文件位于 QT 文件夹中。但是当我将 qt 文件夹放在最顶层文件夹或 src 文件夹中时,我收到错误消息:
fatal error: 'QtCore' file not found
#include <QtCore>
所以文件结构如下:
/collatinus-daemon
collatinus.pro (and other files)
//src
flexion.cpp (and other files)
那么我应该把 qt 文件夹放在哪里呢?另外,我将它从 qt5 重命名为 qt,因为语法有以下一行:
QT += core
################### 好的,我已经启动并运行了 QT 创建器。这是专业文件
QT += network widgets
QT += core
QT -= gui
TARGET = Client_C11
VERSION = "1.0"
#CONFIG += console
#CONFIG -= app_bundle
CONFIG += release_binary
TEMPLATE = app
SOURCES += src/client_main.cpp
OBJECTS_DIR= obj/
MOC_DIR = moc/
unix:!macx:DESTDIR = bin
macx:
# Commandes spéciales pour déployer l'application sur Mac.
# J'ignore s'il faut l'équivalent pour Linux ou Windows.
# Philippe. Octobre 2016
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8
ICON = collatinus_bw.icns
deploy.commands = macdeployqt Client_C11.app
QMAKE_EXTRA_TARGETS += deploy
以下是我的文件夹的一些截图:
这是我收到的错误消息:
这里也是客户端main的代码
#include <QCoreApplication>
#include <iostream>
#include <QtWidgets>
#include <QtNetwork>
class QTcpSocket;
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
QString req = "";
if (argc > 1)
int i = 1;
while (i < argc)
QString suite(argv[i]);
req += " " + suite;
i++;
else req = "-?"; // pour afficher l'aide.
QTcpSocket * tcpSocket = new QTcpSocket();
tcpSocket->abort();
tcpSocket->connectToHost(QHostAddress::LocalHost, 5555);
QByteArray ba = req.toUtf8();
tcpSocket->write(ba);
tcpSocket->waitForBytesWritten();
tcpSocket->waitForReadyRead();
ba = tcpSocket->readAll();
tcpSocket->disconnectFromHost();
tcpSocket->close();
QString rep(ba);
std::cout << rep.toStdString();
a.quit();
我不明白我应该如何处理 qmake
和 cmakelists
【问题讨论】:
您收到的“错误消息”是警告。只是运行的东西。 Cmd-R。看看会发生什么。 在套件的 Qt Creator 配置中(Cmd-`
,然后是套件窗格,套件选项卡),选择您正在使用的套件,确保 C 和 C++ 编译器来自 /Library/Developer
等. 很可能已经检测到这些编译器(请参阅编译器选项卡),因此您只需在该套件中选择它们即可。
【参考方案1】:
我在这个项目中应该把 QT5 克隆放在哪里
你没有:)
Qt 最高 5.14 的安装不可重定位。这意味着一旦安装了 Qt,如果你将它移动到另一个路径,它就会中断。只是不要乱用它:一旦安装,你不用管它,它会正常工作的。
Qt 源代码必须先构建后才能使用。我假设您下载了源代码并希望将其粘贴到项目中并以这种方式构建两者。它根本不是为那样工作而设计的。
Qt 构建需要安装几个其他工具(iirc python、ruby、perl)和其他可选依赖项才能获得完整的功能集,如果它由于某种原因失败,一开始就解决它是不必要的。所以最好从预先构建的 Qt 开始。
我已经从 qt 下载了 qt 并获得了开源的 qt5。现在我不知道该把文件放在哪里。
下载“qt”并没有多大意义,因为每个人都意味着别的东西。如果你已经下载了源代码,那就删除它——你最不想做的就是现在编译 Qt。
通常,Qt 是使用安装程序安装的,因此您下载的是可执行安装程序,并使用它来选择要安装的 Qt 组件。在 Windows 上,选择基于 mingw 的 Qt 版本,因为如果您还没有构建环境(编译器),它也会安装它们。否则,如果您在 Windows 上安装了 MSVC,您将使用基于 MSVC 的版本。
在 Unix 上,您可能希望使用“本机”包管理器安装 Qt - 一个随您的 linux 发行版提供的包管理器,或者 MacOS 上的 macports(非常受欢迎)。
一旦安装了 Qt,您就可以使用 Qt Creator IDE 打开 collatinus 项目(它的 .pro
文件)。从那时起,一切都将“正常工作”——它会让你构建它并运行它产生的任何可执行目标。当然,您可以从命令行构建,但对于初学者来说,这只是一个额外的复杂层并且没有必要。
无论如何,您引用的.pro
文件将由qmake
处理以生成构建项目的构建系统。 qmake
本身就是您用来选择构建 Qt 版本的方法:每个 Qt 安装都有一个 qmake
。因此,在qmake
运行之后,您将make
这样配置的构建,并且查找Qt 标头不会有任何问题。在这种情况下,qmake
的工作是设置所有内容,以便告诉编译器在哪里可以找到 Qt。您不必手动处理它。
如果项目中有CMakeLists.txt
文件,您可能更愿意使用它而不是qmake
,因为cmake
是一种广泛使用的工具,在线提供大量知识,而qmake
现在是过时的。不过,较旧的项目可能只提供需要与qmake
一起使用的.pro
文件,而不是cmake
。
您的问题几乎没有提供足够的细节来提供更集中的答案 - 请准确告诉我们您做了什么,以及您安装了哪些 Qt 元素(无论是使用 Qt Installer 程序,还是使用 unix 包管理器)。
【讨论】:
好的,我下载了visual studios。我很确定我已经在我的 Mac 上下载了 qt。我现在得去睡觉了。所以我明天会尝试让视觉工作室使用代码。 Visual Studio 适用于 Windows,而不适用于 Mac!不要为 Mac 下载它,它对你没有任何好处。 删除 Visual Studio for Mac,并确保你已经安装了 XCode,然后在 Qt Creator 的工具包中配置编译器。以上是关于我在这个项目中将 QT5 克隆放在哪里的主要内容,如果未能解决你的问题,请参考以下文章
在 django 项目中将 service worker 和 manifest 放在哪里?
在 Visual Studio c++ 项目中将 Eigen 外部库放在哪里?