From 79fdd36d5a1a3836cfa421e50b3665c78bd585b3 Mon Sep 17 00:00:00 2001 From: DreamSourceLab Date: Wed, 31 May 2017 20:29:09 +0800 Subject: [PATCH] Fix error of can't find res path --- .gitignore | 1 + DSView/CMakeLists.txt | 2 +- DSView/main.cpp | 16 ++++++++++++++++ libsigrok4DSL/libsigrok.h | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 51116995..1b5697c6 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ libsigrok4DSL/version.h DSView-prj build* +share diff --git a/DSView/CMakeLists.txt b/DSView/CMakeLists.txt index a52c36c8..f96a5270 100644 --- a/DSView/CMakeLists.txt +++ b/DSView/CMakeLists.txt @@ -390,7 +390,7 @@ if(ENABLE_COTIRE) include(cotire) cotire(${PROJECT_NAME}) endif() -set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "/usr/local/lib") +set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") #=============================================================================== #= Installation diff --git a/DSView/main.cpp b/DSView/main.cpp index ba9f38d0..e1bd1593 100644 --- a/DSView/main.cpp +++ b/DSView/main.cpp @@ -42,6 +42,8 @@ #include "config.h" +char DS_RES_PATH[256]; + void usage() { fprintf(stdout, @@ -113,6 +115,20 @@ int main(int argc, char *argv[]) } else if (argc - optind == 1) open_file = argv[argc - 1]; + // Initialise DS_RES_PATH + QDir dir(QCoreApplication::applicationDirPath()); + if (dir.cd("..") && + dir.cd("share") && + dir.cd(QApplication::applicationName()) && + dir.cd("res")) { + QString res_dir = dir.absolutePath() + "/"; + QByteArray str_tmp = res_dir.toLocal8Bit(); + strcpy(DS_RES_PATH, str_tmp.data()); + } else { + qDebug() << "ERROR: config files don't exist."; + return 1; + } + // Initialise libsigrok if (sr_init(&sr_ctx) != SR_OK) { qDebug() << "ERROR: libsigrok init failed."; diff --git a/libsigrok4DSL/libsigrok.h b/libsigrok4DSL/libsigrok.h index 79afa461..772cdf26 100644 --- a/libsigrok4DSL/libsigrok.h +++ b/libsigrok4DSL/libsigrok.h @@ -114,7 +114,7 @@ enum { #define DS_MAX_TRIG_PERCENT 90 -#define DS_RES_PATH "/usr/local/share/DSView/res/" +extern char DS_RES_PATH[256]; /** libsigrok loglevels. */ enum {