diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index eea38b0..7a65869 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -6,7 +6,7 @@
 
 set(CMAKE_C_VISIBILITY_PRESET hidden)
 
-set(LIBZIP_SOURCES
+add_library(zip
   zip_add.c
   zip_add_dir.c
   zip_add_entry.c
@@ -116,40 +116,37 @@
   zip_unchange_archive.c
   zip_unchange_data.c
   zip_utf-8.c
-)
+  ${CMAKE_BINARY_DIR}/zip_err_str.c
+  )
+add_library(libzip::zip ALIAS zip)
 
 if(WIN32)
-  set(LIBZIP_OPSYS_FILES
+  target_sources(zip PRIVATE
     zip_source_file_win32.c
     zip_source_file_win32_named.c
     zip_source_file_win32_utf16.c
     zip_source_file_win32_utf8.c
-  )
+    )
   if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
-    set(LIBZIP_OPSYS_FILES "${LIBZIP_OPSYS_FILES}"
-      zip_random_uwp.c
-    )
+    target_sources(zip PRIVATE zip_random_uwp.c)
   else()
-    set(LIBZIP_OPSYS_FILES "${LIBZIP_OPSYS_FILES}"
-      zip_source_file_win32_ansi.c
-      zip_random_win32.c
-    )
+    target_sources(zip PRIVATE zip_source_file_win32_ansi.c zip_random_win32.c)
   endif()
 else(WIN32)
-  set(LIBZIP_OPSYS_FILES
+  target_sources(zip PRIVATE
     zip_mkstempm.c
     zip_source_file_stdio_named.c
     zip_random_unix.c
-  )
+    )
 endif(WIN32)
 
 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 [=[
 /*
-   This file was generated automatically by CMake
-   from zip.h\; make changes there.
- */
+  This file was generated automatically by CMake
+  from zip.h\; make changes there.
+*/
 
 #include "zipint.h"
 
@@ -175,52 +172,42 @@
 ]=])
 string(APPEND zip_err_str "${zip_err_type}}\;\n")
 file(WRITE ${CMAKE_BINARY_DIR}/zip_err_str.c ${zip_err_str})
-list(APPEND LIBZIP_SOURCES ${CMAKE_BINARY_DIR}/zip_err_str.c)
 
 if(HAVE_LIBBZ2)
-  set(LIBZIP_OPTIONAL_FILES zip_algorithm_bzip2.c)
+  target_sources(zip PRIVATE zip_algorithm_bzip2.c)
 endif()
 
 if(HAVE_LIBLZMA)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_algorithm_xz.c)
+  target_sources(zip PRIVATE zip_algorithm_xz.c)
 endif()
 
 if(HAVE_COMMONCRYPTO)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_crypto_commoncrypto.c
-)
+  target_sources(zip PRIVATE zip_crypto_commoncrypto.c)
 elseif(HAVE_WINDOWS_CRYPTO)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_crypto_win.c
-)
+  target_sources(zip PRIVATE zip_crypto_win.c)
 elseif(HAVE_GNUTLS)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_crypto_gnutls.c
-)
+  target_sources(zip PRIVATE zip_crypto_gnutls.c)
 elseif(HAVE_OPENSSL)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_crypto_openssl.c
-)
+  target_sources(zip PRIVATE zip_crypto_openssl.c)
 elseif(HAVE_MBEDTLS)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_crypto_mbedtls.c
-)
+  target_sources(zip PRIVATE zip_crypto_mbedtls.c)
 endif()
 
 if(HAVE_CRYPTO)
-  set(LIBZIP_OPTIONAL_FILES ${LIBZIP_OPTIONAL_FILES} zip_winzip_aes.c zip_source_winzip_aes_decode.c zip_source_winzip_aes_encode.c
-)
+  target_sources(zip PRIVATE zip_winzip_aes.c zip_source_winzip_aes_decode.c zip_source_winzip_aes_encode.c)
 endif()
 
-add_library(zip ${LIBZIP_SOURCES} ${LIBZIP_EXTRA_FILES} ${LIBZIP_OPTIONAL_FILES} ${LIBZIP_OPSYS_FILES})
-add_library(libzip::zip ALIAS zip)
-
 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>
-)
+  PUBLIC
+  $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/lib>
+  $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+  $<INSTALL_INTERFACE:include>
+  )
 
 if(LIBZIP_DO_INSTALL)
   install(TARGETS zip
diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt
index d5a263c..cdb38c8 100644
--- a/regress/CMakeLists.txt
+++ b/regress/CMakeLists.txt
@@ -1,7 +1,4 @@
 check_function_exists(getopt HAVE_GETOPT)
-if(NOT HAVE_GETOPT)
-  set(SRC_EXTRA_FILES ../src/getopt.c)
-endif()
 
 set(TEST_PROGRAMS
   add_from_filep
@@ -41,14 +38,21 @@
 endforeach()
 
 foreach(PROGRAM IN LISTS GETOPT_USERS)
-  add_executable(${PROGRAM} ${PROGRAM}.c ${SRC_EXTRA_FILES})
+  add_executable(${PROGRAM} ${PROGRAM}.c)
   target_link_libraries(${PROGRAM} zip)
+  if(NOT HAVE_GETOPT)
+    target_sources(${PROGRAM} PRIVATE getopt.c)
+  endif(NOT HAVE_GETOPT)
 endforeach()
 
 foreach(PROGRAM IN LISTS HOLE_USERS)
-  add_executable(${PROGRAM} ${PROGRAM}.c ${SRC_EXTRA_FILES} source_hole.c)
+  add_executable(${PROGRAM} ${PROGRAM}.c source_hole.c)
   target_link_libraries(${PROGRAM} zip)
 endforeach()
+# hole needs getopt() too.
+if(NOT HAVE_GETOPT)
+  target_sources(hole PRIVATE getopt.c)
+endif(NOT HAVE_GETOPT)
 
 foreach(PROGRAM IN LISTS ALL_PROGRAMS)
   include_directories(${PROGRAM} PRIVATE BEFORE ${PROJECT_SOURCE_DIR}/lib ${PROJECT_SOURCE_DIR}/src ${PROJECT_BINARY_DIR})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c911110..c8394a4 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,14 +1,13 @@
 check_function_exists(getopt HAVE_GETOPT)
-if(NOT HAVE_GETOPT)
-  set(SRC_EXTRA_FILES getopt.c)
-endif(NOT HAVE_GETOPT)
-
 foreach(PROGRAM zipcmp zipmerge ziptool)
-  add_executable(${PROGRAM} ${PROGRAM}.c ${SRC_EXTRA_FILES})
+  add_executable(${PROGRAM} ${PROGRAM}.c)
   target_link_libraries(${PROGRAM} zip)
   target_include_directories(${PROGRAM} BEFORE PRIVATE ${PROJECT_SOURCE_DIR}/lib ${PROJECT_BINARY_DIR})
   if(LIBZIP_DO_INSTALL)
     install(TARGETS ${PROGRAM} EXPORT ${PROJECT_NAME}-targets RUNTIME DESTINATION bin)
   endif()
+  if(NOT HAVE_GETOPT)
+    target_sources(${PROGRAM} PRIVATE getopt.c)
+  endif(NOT HAVE_GETOPT)
 endforeach()
 target_link_libraries(zipcmp ${FTS_LIB} ${ZLIB_LIBRARIES})
