我再次撰写有关创建 .deb 包的文章。我用 C++、Cmake 编译器编写应用程序。有人告诉我要创建一个包我需要使用 Cpack。问题是,如何才能正确地做到这一点?该软件包需要用于多个系统(在本例中为 ubuntu 和 astra linux),我听说这也需要处理?但我不知道怎么做。以及如何更新它?如果您使用 Qt 小部件应用程序的示例来写答案,我会很高兴
主页
/
user-699658
Zzero's questions
需要保存int变量的数据(以下在代码中称为pin1),所有操作发生的窗口不是mainwidget。不知道为什么,写入变量后重新打开也等于0,搞不清楚问题所在。
带有 qsettings 的部分代码(learn.cpp)
#include "learn.h"
#include "ui_learn.h"
#include <QMessageBox>
learn::learn(QWidget *parent)
: QWidget(parent)
, ui(new Ui::learn)
{
ui->setupUi(this);
app_sett = new QSettings(this);
loadSettings();
reset_pin();
if (ui -> buttons -> currentIndex() == 0)
{
ui -> pins ->setEnabled(false);
ui -> back_to_main -> setEnabled(false);
}
}
learn::~learn()
{
saveSettings();
delete ui;
}
void learn::saveSettings()
{
app_sett->setValue("pins", pin1);
}
void learn::loadSettings()
{
pin1 = app_sett -> value("pins", 0).toInt();
}
void learn::reset_pin()
{
ui -> label_2 -> setText("Тема " + (QString::number(pin1)));
if(pin1 ==0)
{
ui -> label_2 -> setText(" ");
}
}
learn.h(也经过了一些清理,因为声明了许多其他函数)
#ifndef LEARN_H
#define LEARN_H
#include <QWidget>
#include "settings.h"
#include <QSettings>
namespace Ui {
class learn;
}
class learn : public QWidget
{
Q_OBJECT
public:
explicit learn(QWidget *parent = nullptr);
~learn();
int pin1;
private slots:
void reset_pin();
void saveSettings();
void loadSettings();
private:
Ui::learn *ui;
QSettings* app_sett;
};
#endif // LEARN_H
我还添加了 main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QApplication:: setOrganizationName("Example_for_app");
QApplication:: setApplicationName("Application");
MainWindow w;
w.show();
return a.exec();
}
在我离开该项目之前,一切进展顺利。下次我登录并尝试编译/运行时,出现以下错误:
没有规则来制作“astra”所需的目标“/usr/lib/x86_64-linux-gnu/libGLX.so”。停止。
这是编译器的输出:
20:43:29: Выполняются этапы для проекта windows...
20:43:29: Запускается: «/usr/bin/cmake» --build /home/userr/Документы/proj/windows/build/Desktop_Qt_6_8_2-Debug --target all
[ 0%] Built target windows_autogen_timestamp_deps
[ 14%] Built target windows_autogen
gmake[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGLX.so', needed by 'windows'. Stop.
gmake[1]: *** [CMakeFiles/Makefile2:86: CMakeFiles/windows.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
20:43:29: Процесс «/usr/bin/cmake» завершился с кодом 2.
20:43:29: Ошибка при сборке/развёртывании проекта windows (комплект: Desktop Qt 6.8.2)
20:43:29: Во время выполнения этапа «Собрать»
20:43:29: Прошло времени: 00:00.
(此处的项目名称已更改,因为所有项目都会发生这种情况)
我还怀疑这可能是由于“自动删除”或系统中的任何其他操作而发生的,但我不确定,因为我是新手
更新:Ubuntu 版本 24.04.2 LTS