diff --git a/MainWidget.cpp b/MainWidget.cpp index 738bc4c..6691974 100644 --- a/MainWidget.cpp +++ b/MainWidget.cpp @@ -276,13 +276,13 @@ void MainWidget::generate() // 复制主体文件 fs::path out_binary = fs::path(out_dir).append(fs::path(binary_.toStdString()).filename().string()); fs::copy_file(binary_.toStdString(), out_binary, fs::copy_options::overwrite_existing); - if (!add_run_sh(out_dir.string(), filename)) { + if (!add_run_sh(out_dir.string(), filename, std::vector())) { return; } message(this, "完成"); } -bool MainWidget::add_run_sh(const std::string& out_dir, const std::string& exe_name) +bool MainWidget::add_run_sh(const std::string& out_dir, const std::string& exe_name, const std::vector& exports) { // 生成一个启动文件夹 QFile file("://resource/run.sh"); @@ -295,9 +295,14 @@ bool MainWidget::add_run_sh(const std::string& out_dir, const std::string& exe_n file.close(); std::string run_sh = content.toStdString(); - run_sh = COfStr::replace(run_sh, "replace_string", exe_name); + // REPLACE_EXPORT + std::string outs{}; + for (const auto& item : exports) { + outs = outs + "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:" + item + "\n"; + } + run_sh = COfStr::replace(run_sh, "REPLACE_EXPORT", outs); std::string out_sh = fs::path(out_dir).append(exe_name + ".sh").string(); std::ofstream out(out_sh, std::ios::out); if (!out.is_open()) { diff --git a/MainWidget.h b/MainWidget.h index e469ea4..a35034a 100644 --- a/MainWidget.h +++ b/MainWidget.h @@ -48,7 +48,7 @@ public: 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); + static bool add_run_sh(const std::string& out_dir, const std::string& exe_name, const std::vector& exports); private: Ui::MainWidget* ui; diff --git a/adddesktop.cpp b/adddesktop.cpp index a0913f7..26953c0 100644 --- a/adddesktop.cpp +++ b/adddesktop.cpp @@ -79,8 +79,14 @@ void AddDesktop::install_to_desktop() MainWidget::cmd_exec(cmodBin); MainWidget::cmd_exec(cmodSh); + std::vector evs{}; + int env_cnt = ui->listWidget->count(); + for (int i = 0; i < env_cnt; ++i) { + evs.push_back(ui->listWidget->item(i)->text().toStdString()); + } + if (!fs::exists(sh_path)) { - MainWidget::add_run_sh(sh_path.parent_path().string(), binaryName); + MainWidget::add_run_sh(sh_path.parent_path().string(), binaryName, evs); } fs::path tmp = fs::path(QDir::homePath().toStdString()).append(".config"); if (!fs::exists(tmp)) { @@ -95,7 +101,7 @@ void AddDesktop::install_to_desktop() ct = COfStr::replace(ct, "re_describe", binaryName); ct = COfStr::replace(ct, "re_path", "sh " + sh_path.string()); - fs::path default_ico_path = fs::path(tmp).append("packqt"); + fs::path default_ico_path = fs::path(tmp).append("binpack"); if (!fs::exists(default_ico_path)) { fs::create_directories(default_ico_path); } diff --git a/img/show.png b/img/show.png index 13a4274..5e6344a 100644 Binary files a/img/show.png and b/img/show.png differ diff --git a/img/show2.png b/img/show2.png index 0d5993f..f49700a 100644 Binary files a/img/show2.png and b/img/show2.png differ diff --git a/resource/binpack.png b/resource/binpack.png new file mode 100644 index 0000000..47e0055 Binary files /dev/null and b/resource/binpack.png differ diff --git a/resource/run.sh b/resource/run.sh index 80ae83e..3a5a6eb 100644 --- a/resource/run.sh +++ b/resource/run.sh @@ -10,7 +10,8 @@ cd "$SCRIPT_DIR" || exit echo "当前目录是:$SCRIPT_DIR" # 将脚本所在目录添加到 LD_LIBRARY_PATH 环境变量 -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$SCRIPT_DIR":REPLACE +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$SCRIPT_DIR" +REPLACE_EXPORT # 定义 replace_string 脚本的绝对路径 REPLACE_STRING_SCRIPT="$SCRIPT_DIR/replace_string"