diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt index 43e35ea..91c22d7 100644 --- a/service/CMakeLists.txt +++ b/service/CMakeLists.txt @@ -25,7 +25,10 @@ set(APP_DCONFIG_SCHEMA "${APP_DCONFIG_DIR}/com.deepin.diskmanager.storage.json") # Find the library find_package(PkgConfig REQUIRED) -find_package(DtkCore REQUIRED) +find_package(DtkCore) +if(DtkCore_FOUND) + add_definitions(-DHAVE_DCONFIG) +endif() find_package(DtkGui REQUIRED) find_package(Qt5 COMPONENTS Core diff --git a/service/diskoperation/DeviceStorage.cpp b/service/diskoperation/DeviceStorage.cpp index 94c1fb0..3de3668 100755 --- a/service/diskoperation/DeviceStorage.cpp +++ b/service/diskoperation/DeviceStorage.cpp @@ -8,7 +8,9 @@ #include #include #include +#ifdef HAVE_DCONFIG #include +#endif #include "utils.h" namespace DiskManager { @@ -588,9 +590,11 @@ static bool isPGUX() // 从 DConfig 读取需要识别为 UFS 接口的 spec_version 子串列表,新增 UFS 版本时 // 只需在 com.deepin.diskmanager.storage 配置中追加,无需修改源码。 +// 当构建环境不支持 DConfig(如 102X 等低版本)时,回退到硬编码列表。 static QStringList ufsSpecVersions() { const QStringList fallback{"300", "310", "400", "410"}; +#ifdef HAVE_DCONFIG QScopedPointer cfg( Dtk::Core::DConfig::create("com.deepin.diskmanager", "com.deepin.diskmanager.storage")); if (cfg && cfg->isValid()) { @@ -598,6 +602,7 @@ static QStringList ufsSpecVersions() if (!versions.isEmpty()) return versions; } +#endif return fallback; } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d9803cb..f046890 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -25,7 +25,10 @@ LIST(APPEND SRC_LIST ${UT_DISKOPERATION}) file(GLOB ALL_HEADERS "../service/diskoperation/*.h" "../service/diskoperation/filesystems/*.h") file(GLOB ALL_SOURCES "../service/diskoperation/*.cpp" "../service/diskoperation/filesystems/*.cpp") -find_package(DtkCore REQUIRED) +find_package(DtkCore) +if(DtkCore_FOUND) + add_definitions(-DHAVE_DCONFIG) +endif() add_executable(${PROJECT_NAME_TEST} ${SRC_LIST} ${ALL_HEADERS} ${ALL_SOURCES})