Compare commits
No commits in common. "5dab2d65a2f742d8ef9324f2b0749f7479c86518" and "e40eff80bb42d126e94590e9904beab9e2173e8a" have entirely different histories.
5dab2d65a2
...
e40eff80bb
@ -3,81 +3,14 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "FunctionImp.h"
|
#include "FunctionImp.h"
|
||||||
#include <wx/tokenzr.h>
|
|
||||||
|
|
||||||
CFunPack::CFunPack() = default;
|
CFunPack::CFunPack() = default;
|
||||||
|
|
||||||
bool CFunPack::gen(const wxString& bin, const wxString& out_dir, const wxArrayString& dirs)
|
bool CFunPack::gen(const wxString& out_dir, const wxArrayString& dirs)
|
||||||
{
|
{
|
||||||
auto ret_source = get_depend_on(bin, dirs);
|
|
||||||
auto result = parse_result(ret_source);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxArrayString CFunPack::get_depend_on(const wxString& bin, const wxArrayString& dirs)
|
|
||||||
{
|
|
||||||
wxArrayString array;
|
|
||||||
wxString cmd;
|
|
||||||
if (!dirs.empty()) {
|
|
||||||
cmd.append("export LD_LIBRARY_PATH=$LD_LIBRARY_PATH");
|
|
||||||
for (const auto& data : dirs) {
|
|
||||||
cmd.append(":" + data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cmd.append(" && ldd " + bin);
|
|
||||||
|
|
||||||
FILE* pf = nullptr;
|
|
||||||
if ((pf = popen(cmd.c_str(), "r")) == nullptr) {
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
char buffer[1024]{};
|
|
||||||
wxString result{};
|
|
||||||
while (std::fgets(buffer, sizeof(buffer), pf)) {
|
|
||||||
result.append(buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
array = wxStringTokenize(result, "\t");
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::list<wxString> CFunPack::parse_result(const wxArrayString& array)
|
|
||||||
{
|
|
||||||
std::list<wxString> ret;
|
|
||||||
wxArrayString simlog;
|
|
||||||
wxArrayString bk_arry = array;
|
|
||||||
|
|
||||||
for (auto& data : bk_arry) {
|
|
||||||
|
|
||||||
if (data.empty()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data.Contains("not found")) {
|
|
||||||
simlog.push_back(wxT("未找到依赖:" + data));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
data.Replace("=>", "");
|
|
||||||
wxArrayString tokens = wxStringTokenize(data, " ");
|
|
||||||
wxString dy;
|
|
||||||
if (tokens.size() == 4) {
|
|
||||||
dy = tokens[2];
|
|
||||||
}
|
|
||||||
if (tokens.size() == 3) {
|
|
||||||
dy = tokens[1];
|
|
||||||
}
|
|
||||||
if (dy.starts_with("/lib")) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!dy.empty()) {
|
|
||||||
ret.push_back(dy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CFunInstall::CFunInstall()
|
CFunInstall::CFunInstall()
|
||||||
= default;
|
= default;
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
#ifndef FUNCTIONIMP_H
|
#ifndef FUNCTIONIMP_H
|
||||||
#define FUNCTIONIMP_H
|
#define FUNCTIONIMP_H
|
||||||
#include <wx/arrstr.h>
|
#include <wx/arrstr.h>
|
||||||
#include <list>
|
|
||||||
|
|
||||||
class CFunPack
|
class CFunPack
|
||||||
{
|
{
|
||||||
@ -13,9 +12,7 @@ public:
|
|||||||
CFunPack();
|
CFunPack();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool gen(const wxString& bin, const wxString& out_dir, const wxArrayString& dirs);
|
bool gen(const wxString& out_dir, const wxArrayString& dirs);
|
||||||
wxArrayString get_depend_on(const wxString& bin, const wxArrayString& dirs);
|
|
||||||
std::list<wxString> parse_result(const wxArrayString& array);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CFunInstall
|
class CFunInstall
|
||||||
|
@ -129,7 +129,7 @@ void CMainPanel::genResult(wxCommandEvent& event)
|
|||||||
arrayStrings.Add(item);
|
arrayStrings.Add(item);
|
||||||
}
|
}
|
||||||
wxString out_dir = text_output_ctrl_->GetValue();
|
wxString out_dir = text_output_ctrl_->GetValue();
|
||||||
if (handle_->gen(text_select_ctrl_->GetValue(), out_dir, arrayStrings)) {
|
if (handle_->gen(out_dir, arrayStrings)) {
|
||||||
// 显示消息框
|
// 显示消息框
|
||||||
wxMessageBox(wxT("成功"), // 消息内容
|
wxMessageBox(wxT("成功"), // 消息内容
|
||||||
wxT("成功"), // 标题
|
wxT("成功"), // 标题
|
||||||
@ -175,9 +175,8 @@ void CMainPanel::selectBinaryFile(wxCommandEvent& event)
|
|||||||
{
|
{
|
||||||
wxFileDialog openFileDialog(
|
wxFileDialog openFileDialog(
|
||||||
this, _("Open file"), "", "",
|
this, _("Open file"), "", "",
|
||||||
"*",
|
"Text files (*.txt)|*.txt|PDF files (*.pdf)|*.pdf|All files (*.*)|*.*",
|
||||||
wxFD_OPEN | wxFD_FILE_MUST_EXIST
|
wxFD_OPEN | wxFD_FILE_MUST_EXIST);
|
||||||
);
|
|
||||||
|
|
||||||
if (openFileDialog.ShowModal() == wxID_CANCEL)
|
if (openFileDialog.ShowModal() == wxID_CANCEL)
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user