diff --git a/CMakeLists.txt b/CMakeLists.txt
index 71c43b56eb83dde30767073a4375a64f8d883746..03894320066b2f06649b9c3e8228d6b4fcea86e0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,26 +4,39 @@
 
 cmake_minimum_required( VERSION 3.12 FATAL_ERROR )
 
-project( cdi VERSION 2.4.0 LANGUAGES C )
+project(libcdi VERSION 2.4.0 LANGUAGES C )
 set(CMAKE_C_STANDARD 11)
 
+include(CheckIncludeFile)
+
 configure_file (
   "${PROJECT_SOURCE_DIR}/cmake/cdi_config.h.in"
-  "${PROJECT_BINARY_DIR}/config.h"
+  "${PROJECT_SOURCE_DIR}/src/config.h"
   )
 
-include_directories("${PROJECT_BINARY_DIR}")
-
-list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
-
-find_package(NetCDF)
+find_package(hdf5 REQUIRED)
+if(hdf5_FOUND)
+    message(STATUS "HDF5 shaed found")
+else()
+    message(FATAL_ERROR "HDF shared not found")
+endif()
+
+#NetCDF
+find_package(netCDF COMPONENTS C REQUIRED)
+set(netcdf_flag HAVE_LIBNETCDF)
+set(netcdf_flag ${HAVE_LIBNETCDF})
+check_include_files("netcdf.h" ${netcdf_flag} C)
+if (${netCDF_FOUND})
+    message(STATUS "added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}")
+    add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND})
+else()
+  message(WARNING "netcdf not found, compiling without netcdf")
+endif ()
 
-set(HAVE_NETCDF ${netCDF_FOUND} )
 
-if (netCDF_FOUND)
-  set(HAVE_NETCDF 1)
-endif ()
+#adding subdirectories
+## lib and general files
+add_subdirectory(src)
+## cdi executable
+add_subdirectory(app)
 
-add_subdirectory( src )
-add_subdirectory( app )
-#target_link_libraries(cdi PRIVATE NetCDF)
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 22bca89f702b3c330d8e9cfdf9f2ff7d493f6f4c..ce87f49683bff30ea6f52c4f06e33dc4d1bf135e 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -7,6 +7,6 @@ target_include_directories(cdi PUBLIC
   $<INSTALL_INTERFACE:include
 )
 
-target_link_libraries(cdi PUBLIC cdilib)
+target_link_libraries(cdi PUBLIC cdilib netCDF::netcdf ${HDF5_LIBS} pthread)
 
 target_compile_definitions(cdi PUBLIC HAVE_CONFIG_H)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3d2dc7e693e16780f4b8e4fdcca1d2725de8e272..1f88fe09b84956160e7b52fb11ea0605f0b274a3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -142,5 +142,7 @@ add_library(cdilib
   ${cdi_src_files}
 #  INSTALL_HEADERS_LIST  cdi.h
 )
+find_package(HDF5 REQUIRED COMPONENTS C REQUIRED)
 
+target_link_libraries(cdilib PUBLIC netCDF::netcdf ${HDF5_LIBS})
 target_compile_definitions(cdilib PUBLIC HAVE_CONFIG_H)