diff --git a/src/training/CMakeLists.txt b/src/training/CMakeLists.txt
index 8fd96a9..186341e 100644
--- a/src/training/CMakeLists.txt
+++ b/src/training/CMakeLists.txt
@@ -52,7 +52,7 @@ endif()
 # experimental
 
 if (NOT CPPAN_BUILD AND NOT SW_BUILD)
-    find_package(ICU 52.1 COMPONENTS uc i18n)
+    find_package(ICU 52.1 REQUIRED COMPONENTS i18n uc)
 endif()
 
 ########################################
@@ -187,6 +187,9 @@ set(unicharset_training_src
 
 )
 add_library                 (unicharset_training ${unicharset_training_src})
+if(UNIX)
+    list(APPEND ICU_LIBRARIES ${CMAKE_DL_LIBS})
+endif()
 if (CPPAN_BUILD)
 target_link_libraries       (unicharset_training common_training pvt.cppan.demo.unicode.icu.i18n)
 elseif (SW_BUILD)
@@ -253,16 +256,27 @@ if (NOT CPPAN_BUILD AND NOT SW_BUILD)
 find_package(PkgConfig)
 endif()
 
-if (PKG_CONFIG_FOUND OR CPPAN_BUILD OR SW_BUILD)
-
-if (PKG_CONFIG_FOUND)
-pkg_check_modules(Pango REQUIRED pango>=1.22.0)
-pkg_check_modules(Cairo REQUIRED cairo)
-pkg_check_modules(PangoFt2 REQUIRED pangoft2)
-pkg_check_modules(PangoCairo REQUIRED pangocairo)
-pkg_check_modules(FontConfig REQUIRED fontconfig)
+find_package(unofficial-cairo CONFIG REQUIRED)
+find_package(unofficial-glib CONFIG REQUIRED)
+find_package(unofficial-gettext CONFIG REQUIRED)
+find_package(unofficial-fontconfig CONFIG REQUIRED)
+find_package(Freetype REQUIRED)
+if(UNIX OR BUILD_SHARED_LIBS)
+    find_package(harfbuzz CONFIG REQUIRED)
 endif()
 
+find_library(Pango_LIBRARY_RELEASE NAMES pango-1.0)
+find_library(Pango_LIBRARY_DEBUG NAMES pango-1.0)
+select_library_configurations(Pango)
+
+find_library(PangoFt2_LIBRARY_RELEASE NAMES pangoft2-1.0)
+find_library(PangoFt2_LIBRARY_DEBUG NAMES pangoft2-1.0)
+select_library_configurations(PangoFt2)
+
+find_library(PangoCairo_LIBRARY_RELEASE NAMES pangocairo-1.0)
+find_library(PangoCairo_LIBRARY_DEBUG NAMES pangocairo-1.0)
+select_library_configurations(PangoCairo)
+
 set(text2image_src
     text2image.cpp
     boxchar.cpp
@@ -285,16 +299,34 @@ set(text2image_src
 
 add_executable              (text2image ${text2image_src})
 target_link_libraries       (text2image unicharset_training)
-if (PKG_CONFIG_FOUND)
+
 target_include_directories  (text2image BEFORE PRIVATE ${Cairo_INCLUDE_DIRS} ${Pango_INCLUDE_DIRS})
 target_compile_definitions  (text2image PRIVATE -DPANGO_ENABLE_ENGINE)
-target_link_libraries       (text2image
+if(UNIX OR BUILD_SHARED_LIBS)
+    target_link_libraries       (text2image
+    ${PangoCairo_LIBRARIES}
+    ${PangoFt2_LIBRARIES}
     ${Pango_LIBRARIES}
     ${Cairo_LIBRARIES}
+    harfbuzz::harfbuzz
+    Freetype::Freetype
+    unofficial::glib::gio unofficial::glib::glib unofficial::glib::gmodule unofficial::glib::gobject
+    unofficial::cairo::cairo unofficial::cairo::cairo-gobject
+    unofficial::gettext::libintl
+    unofficial::fontconfig::fontconfig
+)
+else()
+    target_link_libraries       (text2image
     ${PangoCairo_LIBRARIES}
     ${PangoFt2_LIBRARIES}
     ${FontConfig_LIBRARIES}
-)
+    ${Pango_LIBRARIES}
+    Freetype::Freetype
+    unofficial::glib::gio unofficial::glib::glib unofficial::glib::gmodule unofficial::glib::gobject
+    unofficial::cairo::cairo unofficial::cairo::cairo-gobject
+    unofficial::gettext::libintl
+    unofficial::fontconfig::fontconfig
+ )
 endif()
 if (CPPAN_BUILD)
 target_link_libraries       (text2image pvt.cppan.demo.gnome.pango.pangocairo)
@@ -302,7 +334,6 @@ endif()
 project_group               (text2image "Training Tools")
 install                     (TARGETS text2image RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
 
-endif()
 endif(ICU_FOUND)
 
 ###############################################################################
