diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7c2d5b3..32a2f40 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -13,11 +13,9 @@ endif ()
 find_package(OpenSSL REQUIRED)
 
 set(protobuf_MODULE_COMPATIBLE ON CACHE BOOL "")
-if (WIN32)
-	find_package(Protobuf REQUIRED CONFIG)
-else ()
-	find_package(Protobuf 3.5.0 REQUIRED)
-endif ()
+find_package(Protobuf CONFIG REQUIRED)
+# Use target in order to carry link libraries
+set(Protobuf_LIBRARY protobuf::libprotobuf)
 
 if (WIN32)
 	set (HAVE_SYS_UIO_H_01 false)
@@ -39,12 +37,21 @@ else ()
 		configure_file(${SNAPPY_DIR}/snappy-stubs-public.h.in ${SNAPPY_DIR}/snappy-stubs-public.h)
 	else ()
 		find_package(Snappy 1.1.6 REQUIRED CONFIG)
+		add_library(snappy ALIAS Snappy::snappy)
 		set(SNAPPY_LIB snappy)
 	endif ()
 
 	if (LZ4_INSTALLED)
+		find_package(lz4 CONFIG REQUIRED)
+		add_library(lz4 ALIAS lz4::lz4)
 		set(LZ4_LIB lz4)
 	endif ()
+
+	find_package(ZLIB REQUIRED)
+	add_library(z ALIAS ZLIB::ZLIB)
+
+	find_package(Threads REQUIRED)
+	add_library(pthread ALIAS Threads::Threads)
 endif()
 
 include_directories(
@@ -57,11 +64,10 @@ include_directories(
 
 if (WIN32)
 	set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   /MP /wd4200")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4200 /Zc:__cplusplus /std:c++14")
-else ()
-	set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -Wall -fPIC -pipe -std=gnu90")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC -pipe -std=c++14 -fno-exceptions")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4200 /Zc:__cplusplus")
 endif ()
+set(CMAKE_C_STANDARD 90)
+set(CMAKE_CXX_STANDARD 17)
 
 add_subdirectory(generator)
 
@@ -108,6 +114,8 @@ if (WIN32)
 		strncasecmp=_strnicmp
 	)
 
+	target_link_libraries(${PROJECT_NAME} PRIVATE protobuf::libprotobuf)
+
 	install(
 		TARGETS ${PROJECT_NAME}
 		ARCHIVE
@@ -118,7 +126,7 @@ if (WIN32)
 else ()
 	set(STATIC_LIB_NAME ${PROJECT_NAME}-static)
 	set(SHARED_LIB_NAME ${PROJECT_NAME}-shared)
-	get_filename_component(Protobuf_LIB_DIR ${Protobuf_LIBRARY} DIRECTORY)
+	set(Protobuf_LIB_DIR "")
 	link_directories(${OPENSSL_LINK_DIR} ${WORKFLOW_LIB_DIR} ${Protobuf_LIB_DIR})
 
 	add_library(
@@ -143,8 +151,18 @@ else ()
 		$<TARGET_OBJECTS:http>
 	)
 
-	if (APPLE)
+	if (NOT BUILD_SHARED_LIBS)
+		target_link_libraries(${STATIC_LIB_NAME}
+			PRIVATE
+							  OpenSSL::SSL
+							  OpenSSL::Crypto
+							  pthread
+							  ${Protobuf_LIBRARY}
+							  workflow
+							  z ${SNAPPY_LIB} ${LZ4_LIB})
+	elseif (1)
 		target_link_libraries(${SHARED_LIB_NAME}
+			PRIVATE
 							  OpenSSL::SSL
 							  OpenSSL::Crypto
 							  pthread
@@ -161,17 +179,22 @@ else ()
 	add_dependencies(${STATIC_LIB_NAME} LINK_HEADERS)
 	add_dependencies(${SHARED_LIB_NAME} LINK_HEADERS)
 
+  if(NOT BUILD_SHARED_LIBS)
+	set_target_properties(${SHARED_LIB_NAME} PROPERTIES EXCLUDE_FROM_ALL 1)
 	install(
 		TARGETS ${STATIC_LIB_NAME}
 		ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 		COMPONENT devel
 	)
 
+  else()
+	set_target_properties(${STATIC_LIB_NAME} PROPERTIES EXCLUDE_FROM_ALL 1)
 	install(
 		TARGETS ${SHARED_LIB_NAME}
 		LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
 		COMPONENT devel
 	)
+  endif()
 
 endif ()
 
diff --git a/srpc-config.cmake.in b/srpc-config.cmake.in
index 54b4323..1cdb97f 100644
--- a/srpc-config.cmake.in
+++ b/srpc-config.cmake.in
@@ -3,7 +3,6 @@
 set(SRPC_VERSION "@srpc_VERSION@")
 set_and_check(SRPC_INCLUDE_DIR "@PACKAGE_CONFIG_INC_DIR@")
 set_and_check(SRPC_LIB_DIR "@PACKAGE_CONFIG_LIB_DIR@")
-set_and_check(SRPC_BIN_DIR "@PACKAGE_CONFIG_BIN_DIR@")
 
 if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/srpc-targets.cmake")
     include ("${CMAKE_CURRENT_LIST_DIR}/srpc-targets.cmake")
