Fix MSVC zlib include propagation
diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt
index a3de0ef..e725384 100644
--- a/cpp/src/CMakeLists.txt
+++ b/cpp/src/CMakeLists.txt
@@ -56,32 +56,57 @@
 set(PROJECT_INCLUDE_DIR
         ${CMAKE_SOURCE_DIR}/src
 )
+set(TSFILE_PUBLIC_THIRD_PARTY_INCLUDE_DIRS "")
 
 if (ENABLE_SNAPPY)
-    list(APPEND PROJECT_INCLUDE_DIR
+    set(TSFILE_SNAPPY_INCLUDE_DIRS
             ${THIRD_PARTY_INCLUDE}/google_snappy
             ${CMAKE_SOURCE_DIR}/third_party/google_snappy
     )
+    list(APPEND PROJECT_INCLUDE_DIR
+            ${TSFILE_SNAPPY_INCLUDE_DIRS}
+    )
+    list(APPEND TSFILE_PUBLIC_THIRD_PARTY_INCLUDE_DIRS
+            ${TSFILE_SNAPPY_INCLUDE_DIRS}
+    )
 endif()
 
 if (ENABLE_LZ4)
-    list(APPEND PROJECT_INCLUDE_DIR
+    set(TSFILE_LZ4_INCLUDE_DIRS
             ${CMAKE_SOURCE_DIR}/third_party/lz4
     )
+    list(APPEND PROJECT_INCLUDE_DIR
+            ${TSFILE_LZ4_INCLUDE_DIRS}
+    )
+    list(APPEND TSFILE_PUBLIC_THIRD_PARTY_INCLUDE_DIRS
+            ${TSFILE_LZ4_INCLUDE_DIRS}
+    )
 endif()
 
 if (ENABLE_LZOKAY)
-    list(APPEND PROJECT_INCLUDE_DIR
+    set(TSFILE_LZOKAY_INCLUDE_DIRS
             ${CMAKE_SOURCE_DIR}/third_party/lzokay
     )
+    list(APPEND PROJECT_INCLUDE_DIR
+            ${TSFILE_LZOKAY_INCLUDE_DIRS}
+    )
+    list(APPEND TSFILE_PUBLIC_THIRD_PARTY_INCLUDE_DIRS
+            ${TSFILE_LZOKAY_INCLUDE_DIRS}
+    )
 endif()
 
 if (ENABLE_ZLIB)
+    set(TSFILE_ZLIB_INCLUDE_DIRS
+            ${CMAKE_SOURCE_DIR}/third_party/zlib-1.3.1
+            ${THIRD_PARTY_INCLUDE}/zlib-1.3.1
+    )
     list(APPEND PROJECT_INCLUDE_DIR
             # zlib.h ships in the source tree; zconf.h is generated into the
             # build tree by zlib's own CMake, so both directories are needed.
-            ${CMAKE_SOURCE_DIR}/third_party/zlib-1.3.1
-            ${THIRD_PARTY_INCLUDE}/zlib-1.3.1
+            ${TSFILE_ZLIB_INCLUDE_DIRS}
+    )
+    list(APPEND TSFILE_PUBLIC_THIRD_PARTY_INCLUDE_DIRS
+            ${TSFILE_ZLIB_INCLUDE_DIRS}
     )
 endif()
 
@@ -154,6 +179,9 @@
 target_include_directories(tsfile PUBLIC
         $<BUILD_INTERFACE:${LIBRARY_INCLUDE_DIR}>
         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/tsfile>)
+foreach(include_dir IN LISTS TSFILE_PUBLIC_THIRD_PARTY_INCLUDE_DIRS)
+    target_include_directories(tsfile PUBLIC $<BUILD_INTERFACE:${include_dir}>)
+endforeach()
 
 if (${COV_ENABLED})
     message("Enable code cov...")
diff --git a/cpp/test/CMakeLists.txt b/cpp/test/CMakeLists.txt
index 066e5ac..ee641b7 100644
--- a/cpp/test/CMakeLists.txt
+++ b/cpp/test/CMakeLists.txt
@@ -169,6 +169,7 @@
 endif()
 
 if (ENABLE_ZLIB)
+    include_directories(${CMAKE_SOURCE_DIR}/third_party/zlib-1.3.1)
     include_directories(${THIRD_PARTY_INCLUDE}/zlib-1.3.1)
 endif()