Пока остановился на варианте - добавляем в проект исходники и подключаем через
add_subdirectory(zlib-1.2.11 EXCLUDE_FROM_ALL)
Но пока не нашел лучшего способа подключить заголовки в основной проект, чем добавление target_include_directories в CMakeLists.txt дочернего проекта:
add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
И не понимаю пока, как сделать нормальную поддержку CPack, если собирать как shared library.