cmake: more best practice changes

Use target_link_libraries directly instead of via variables
Use target_include_directories instead of include_directories.
Use add_compile_definitions instead of add_definitions.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eda98e7..2747ae6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,7 +47,7 @@
   set(MBEDTLS_LIBRARIES FALSE)
 endif()
 if(ENABLE_OPENSSL)
-  include(FindOpenSSL)
+  find_package(OpenSSL)
 else()
   set(OPENSSL_FOUND FALSE)
 endif()
@@ -210,15 +210,11 @@
 test_big_endian(WORDS_BIGENDIAN)
 
 find_package(ZLIB 1.1.2 REQUIRED)
-include_directories(${ZLIB_INCLUDE_DIR})
 
 if(ENABLE_BZIP2)
   find_package(BZip2)
   if(BZIP2_FOUND)
     set(HAVE_LIBBZ2 1)
-
-    include_directories(${BZIP2_INCLUDE_DIR})
-    set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} ${BZIP2_LIBRARIES})
   else()
     message(WARNING "-- bzip2 library not found; bzip2 support disabled")
   endif(BZIP2_FOUND)
@@ -228,9 +224,6 @@
   find_package(LibLZMA)
   if(LIBLZMA_FOUND)
     set(HAVE_LIBLZMA 1)
-
-    include_directories(${LIBLZMA_INCLUDE_DIR})
-    set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} ${LIBLZMA_LIBRARY})
   else()
     message(WARNING "-- lzma library not found; lzma support disabled")
   endif(LIBLZMA_FOUND)
@@ -246,18 +239,12 @@
 elseif (GNUTLS_FOUND AND NETTLE_FOUND)
   set(HAVE_CRYPTO 1)
   set(HAVE_GNUTLS 1)
-  include_directories(${GNUTLS_INCLUDE_DIR} ${NETTLE_INCLUDE_DIR})
-  set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} ${GNUTLS_LIBRARY} ${NETTLE_LIBRARY})
 elseif (OPENSSL_FOUND)
   set(HAVE_CRYPTO 1)
   set(HAVE_OPENSSL 1)
-  include_directories(${OPENSSL_INCLUDE_DIR})
-  set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} ${OPENSSL_LIBRARIES})
 elseif (MBEDTLS_LIBRARIES)
   set(HAVE_CRYPTO 1)
   set(HAVE_MBEDTLS 1)
-  include_directories(${MBEDTLS_INCLUDE_DIR})
-  set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} ${MBEDTLS_LIBRARIES})
 endif()
 
 if (NOT HAVE_CRYPTO)
@@ -265,18 +252,13 @@
 endif()
 
 if(MSVC)
-  ADD_DEFINITIONS("-D_CRT_SECURE_NO_WARNINGS")
-  ADD_DEFINITIONS("-D_CRT_NONSTDC_NO_DEPRECATE")
+  add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
+  add_compile_definitions(_CRT_NONSTDC_NO_DEPRECATE)
 endif(MSVC)
 
 if(WIN32)
-  if(HAVE_WINDOWS_CRYPTO)
-    set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} bcrypt)
-  endif()
   if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
-    ADD_DEFINITIONS(-DMS_UWP)
-  else(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
-    set(OPTIONAL_LIBRARY ${OPTIONAL_LIBRARY} advapi32)
+    add_compile_definitions(MS_UWP)
   endif(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
 endif(WIN32)
 
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 7a65869..559b869 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -1,9 +1,5 @@
 include(CheckFunctionExists)
 
-if(LIBZIP_DO_INSTALL)
-  install(FILES zip.h DESTINATION include)
-endif()
-
 set(CMAKE_C_VISIBILITY_PRESET hidden)
 
 add_library(zip
@@ -131,6 +127,7 @@
     target_sources(zip PRIVATE zip_random_uwp.c)
   else()
     target_sources(zip PRIVATE zip_source_file_win32_ansi.c zip_random_win32.c)
+    target_link_libraries(zip PRIVATE advapi32)
   endif()
 else(WIN32)
   target_sources(zip PRIVATE
@@ -140,6 +137,61 @@
     )
 endif(WIN32)
 
+if(HAVE_LIBBZ2)
+  target_sources(zip PRIVATE zip_algorithm_bzip2.c)
+  target_link_libraries(zip PRIVATE BZip2::BZip2)
+endif()
+
+if(HAVE_LIBLZMA)
+  target_sources(zip PRIVATE zip_algorithm_xz.c)
+  target_link_libraries(zip PRIVATE LibLZMA::LibLZMA)
+endif()
+
+if(HAVE_COMMONCRYPTO)
+  target_sources(zip PRIVATE zip_crypto_commoncrypto.c)
+elseif(HAVE_WINDOWS_CRYPTO)
+  target_sources(zip PRIVATE zip_crypto_win.c)
+  target_link_libraries(zip PRIVATE bcrypt)
+elseif(HAVE_GNUTLS)
+  target_sources(zip PRIVATE zip_crypto_gnutls.c)
+  target_include_directories(zip PRIVATE ${NETTLE_INCLUDE_DIR})
+  target_link_libraries(zip PRIVATE GnuTLS::GnuTLS ${NETTLE_LIBRARY})
+elseif(HAVE_OPENSSL)
+  target_sources(zip PRIVATE zip_crypto_openssl.c)
+  target_link_libraries(zip PRIVATE OpenSSL::Crypto)
+elseif(HAVE_MBEDTLS)
+  target_sources(zip PRIVATE zip_crypto_mbedtls.c)
+  target_include_directories(zip PRIVATE ${MBEDTLS_INCLUDE_DIR})
+  target_link_libraries(zip PRIVATE ${MBEDTLS_LIBRARIES})
+endif()
+
+if(HAVE_CRYPTO)
+  target_sources(zip PRIVATE zip_winzip_aes.c zip_source_winzip_aes_decode.c zip_source_winzip_aes_encode.c)
+endif()
+
+if(SHARED_LIB_VERSIONNING)
+  set_target_properties(zip PROPERTIES VERSION 5.3 SOVERSION 5)
+endif()
+
+target_link_libraries(zip PRIVATE ${ZLIB_LIBRARIES} ${OPTIONAL_LIBRARY})
+target_include_directories(zip
+  PUBLIC
+  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/lib>
+  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+  $<INSTALL_INTERFACE:include>
+  )
+
+if(LIBZIP_DO_INSTALL)
+  install(TARGETS zip
+    EXPORT ${PROJECT_NAME}-targets
+    RUNTIME DESTINATION bin
+    ARCHIVE DESTINATION lib
+    INCLUDES DESTINATION include
+    LIBRARY DESTINATION lib)
+  install(FILES zip.h DESTINATION include)
+endif()
+
+# create zip_err_str.h from zip.h
 file(READ ${PROJECT_SOURCE_DIR}/lib/zip.h zip_h)
 string(REGEX MATCHALL "#define ZIP_ER_([A-Z_]+) ([0-9]+)[ \t]+/([-*0-9a-zA-Z ']*)/" zip_h_err ${zip_h})
 set(zip_err_str [=[
@@ -172,48 +224,3 @@
 ]=])
 string(APPEND zip_err_str "${zip_err_type}}\;\n")
 file(WRITE ${CMAKE_BINARY_DIR}/zip_err_str.c ${zip_err_str})
-
-if(HAVE_LIBBZ2)
-  target_sources(zip PRIVATE zip_algorithm_bzip2.c)
-endif()
-
-if(HAVE_LIBLZMA)
-  target_sources(zip PRIVATE zip_algorithm_xz.c)
-endif()
-
-if(HAVE_COMMONCRYPTO)
-  target_sources(zip PRIVATE zip_crypto_commoncrypto.c)
-elseif(HAVE_WINDOWS_CRYPTO)
-  target_sources(zip PRIVATE zip_crypto_win.c)
-elseif(HAVE_GNUTLS)
-  target_sources(zip PRIVATE zip_crypto_gnutls.c)
-elseif(HAVE_OPENSSL)
-  target_sources(zip PRIVATE zip_crypto_openssl.c)
-elseif(HAVE_MBEDTLS)
-  target_sources(zip PRIVATE zip_crypto_mbedtls.c)
-endif()
-
-if(HAVE_CRYPTO)
-  target_sources(zip PRIVATE zip_winzip_aes.c zip_source_winzip_aes_decode.c zip_source_winzip_aes_encode.c)
-endif()
-
-if(SHARED_LIB_VERSIONNING)
-  set_target_properties(zip PROPERTIES VERSION 5.3 SOVERSION 5)
-endif()
-
-target_link_libraries(zip PRIVATE ${ZLIB_LIBRARIES} ${OPTIONAL_LIBRARY})
-target_include_directories(zip
-  PUBLIC
-  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/lib>
-  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
-  $<INSTALL_INTERFACE:include>
-  )
-
-if(LIBZIP_DO_INSTALL)
-  install(TARGETS zip
-    EXPORT ${PROJECT_NAME}-targets
-    RUNTIME DESTINATION bin
-    ARCHIVE DESTINATION lib
-    INCLUDES DESTINATION include
-    LIBRARY DESTINATION lib)
-endif()