Merge pull request #260 from jdymitarai/feat-msvc-static-runtime-190
cmake: add SNAPPY_MSVC_STATIC_RUNTIME and enable CMP0091 (fixes #190)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0808235..1cab614 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -306,6 +306,9 @@
"snappy-stubs-public.h.in"
"${PROJECT_BINARY_DIR}/snappy-stubs-public.h")
+# Must be included before CMAKE_INSTALL_INCLUDEDIR is used.
+include(GNUInstallDirs)
+
add_library(snappy "")
target_sources(snappy
PRIVATE
@@ -318,19 +321,19 @@
"${PROJECT_BINARY_DIR}/config.h"
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy-c.h>
- $<INSTALL_INTERFACE:include/snappy-c.h>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/snappy-c.h>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy-sinksource.h>
- $<INSTALL_INTERFACE:include/snappy-sinksource.h>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/snappy-sinksource.h>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/snappy.h>
- $<INSTALL_INTERFACE:include/snappy.h>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/snappy.h>
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/snappy-stubs-public.h>
- $<INSTALL_INTERFACE:include/snappy-stubs-public.h>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/snappy-stubs-public.h>
)
target_include_directories(snappy
PUBLIC
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
- $<INSTALL_INTERFACE:include>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
set_target_properties(snappy
PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
@@ -454,9 +457,6 @@
)
endif(SNAPPY_FUZZING_BUILD)
-# Must be included before CMAKE_INSTALL_INCLUDEDIR is used.
-include(GNUInstallDirs)
-
if(SNAPPY_INSTALL)
install(TARGETS snappy
EXPORT SnappyTargets
diff --git a/README.md b/README.md
index a4368d7..64eccfb 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,10 @@
cd build && cmake ../ && make
```
+MSVC users must manually set `SNAPPY_HAVE_SSSE3`, `SNAPPY_HAVE_X86_CRC32`,
+`SNAPPY_HAVE_BMI2`, `SNAPPY_HAVE_NEON_CRC32`, and `SNAPPY_HAVE_NEON` due to
+MSVC's incorrect architecture detection, if using pre-`/arch:AVX2`.
+
Usage
=====