diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 8efd5537bf..421fef2f10 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.10) -project(lammps-gui VERSION 0.1 LANGUAGES CXX) +project(lammps-gui VERSION 0.9 LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -11,7 +11,7 @@ set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -option(LAMMPS_GUI_USE_PLUGIN "Load LAMMPS library as plugin" OFF) +option(LAMMPS_GUI_USE_PLUGIN "Load LAMMPS library dynamically at runtime" OFF) # when this file is included as subdirectory in the LAMMPS build, many settings are directly imported if(LAMMPS_DIR) @@ -106,6 +106,7 @@ else() target_include_directories(lammps-gui PRIVATE ${LAMMPS_HEADER_DIR}) target_link_libraries(lammps-gui PRIVATE ${LAMMPS_LIBRARY}) endif() +target_compile_definitions(lammps-gui PRIVATE LAMMPS_GUI_VERSION="${PROJECT_VERSION}") target_link_libraries(lammps-gui PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) set_target_properties(lammps-gui PROPERTIES diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index bf17e0fe84..def0dbf4b8 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -41,7 +41,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : QMainWindow(parent), ui(new Ui::LammpsGui), highlighter(nullptr), capturer(nullptr), status(nullptr), logwindow(nullptr), logupdater(nullptr), progress(nullptr), - lammps_handle(nullptr), plugin_handle(nullptr), is_running(false) + lammps_handle(nullptr), plugin_handle(nullptr), plugin_path(nullptr), is_running(false) { ui->setupUi(this); this->setCentralWidget(ui->textEdit); @@ -89,11 +89,16 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : ui->statusbar->addWidget(progress); #if defined(LAMMPS_GUI_USE_PLUGIN) - liblammpsplugin_t *lammps = liblammpsplugin_load("liblammps.so"); - if (!lammps) lammps = liblammpsplugin_load("liblammps.dylib"); - if (!lammps) lammps = liblammpsplugin_load("liblammps.dll"); + liblammpsplugin_t *lammps = nullptr; + for (const auto libfile : {"liblammps.so", "./liblammps.so", "liblammps.dylib", "./liblammps.dylib", "liblammps.dll"}) { + if (!lammps) lammps = liblammpsplugin_load(libfile); + if (lammps) { + plugin_path = libfile; + break; + } + } bool do_exit = !lammps || (lammps && lammps->abiversion != LAMMPSPLUGIN_ABI_VERSION); - if (!lammps) QMessageBox::critical(this, "Warning", "Cannot open LAMMPS shared library file"); + if (!lammps) QMessageBox::critical(this, "Error", "Cannot open LAMMPS shared library file"); if (lammps && (lammps->abiversion != LAMMPSPLUGIN_ABI_VERSION)) QMessageBox::critical(this, "Warning", "ERROR: LAMMPS lib plugin ABI version does not match"); @@ -376,7 +381,16 @@ void LammpsGui::clear() void LammpsGui::about() { - std::string version = "This is LAMMPS-GUI version 0.1"; + std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; +#if defined(LAMMPS_GUI_USE_PLUGIN) + version += " - LAMMPS linked dynamically"; + if (plugin_path) { + version += " from file "; + version += plugin_path; + } +#else + version += " - LAMMPS linked statically"; +#endif std::string info = "LAMMPS is currently running. LAMMPS config info not available."; // LAMMPS is not re-entrant, so we can only query LAMMPS when it is not running diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index ebe66f7a8e..3b4939f62b 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -76,6 +76,7 @@ private: QString current_dir; void *lammps_handle; void *plugin_handle; + const char *plugin_path; bool is_running; };