#ifndef MAINWIDGET_H #define MAINWIDGET_H #include #include #include #include #include #include #include #include namespace fs = std::filesystem; QT_BEGIN_NAMESPACE namespace Ui { class MainWidget; } QT_END_NAMESPACE class MainWidget : public QWidget { Q_OBJECT public: MainWidget(QWidget* parent = nullptr); ~MainWidget(); private: void connect_operator(); void control_init(); void add_env_btn(); void del_env_btn(); void generate(); void simple_log(const QString& info, bool enter = true); // 将某个文件夹拷贝到制定目录下 bool copy_dir(const std::string& source_dir, const std::string& des_dir); // 将二进制文件安装到菜单栏 void install_bin2menu(); private: std::vector get_depend_on(const std::string& name, const std::vector& env); std::list handle_result(const std::vector& vec); public: static QString SelectDirectory(QWidget* parent, QLineEdit* pEdit, const QString& pre_path = ""); static QString SelectFile(QWidget* parent, QLineEdit* pEdit, const QString& info, const QString& filter); static bool isOk(QWidget* parent, const QString& title, const QString& content); static void message(QWidget* parent, const QString& content); static void cmd_exec(const std::string& cmd); static bool add_run_sh(const std::string& out_dir, const std::string& exe_name, const std::vector& exports); private: Ui::MainWidget* ui; private: QString binary_{}; std::vector envs_{}; std::vector sos_{}; }; #endif // MAINWIDGET_H