diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9fb9f4c51b..e3b146b154 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,7 +35,19 @@ target_include_directories(
${NLOHMANN_JSON_TARGET_NAME}
INTERFACE $
)
-
+
+## add debug view defintion file for msvc (natvis) [cmake <= 3.2.2 does not support export of source files]
+if (MSVC AND CMAKE_VERSION VERSION_GREATER "3.2.2")
+ set(NLOHMANN_ADD_NATVIS TRUE)
+ set(NLOHMANN_NATVIS_FILE "nlohmann_json.natvis")
+ target_sources(
+ ${NLOHMANN_JSON_TARGET_NAME}
+ INTERFACE
+ $
+ $
+ )
+endif()
+
##
## TESTS
## create and configure the unit test target
@@ -67,6 +79,12 @@ install(
FILES ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE} ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE}
DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR}
)
+if (NLOHMANN_ADD_NATVIS)
+ install(
+ FILES ${NLOHMANN_NATVIS_FILE}
+ DESTINATION .
+)
+endif()
install(
TARGETS ${NLOHMANN_JSON_TARGET_NAME}
EXPORT ${NLOHMANN_JSON_TARGETS_EXPORT_NAME}
diff --git a/nlohmann_json.natvis b/nlohmann_json.natvis
new file mode 100644
index 0000000000..63e3f8423d
--- /dev/null
+++ b/nlohmann_json.natvis
@@ -0,0 +1,32 @@
+
+
+
+ null
+ {*(m_value.object)}
+ {*(m_value.array)}
+ {*(m_value.string)}
+ {m_value.boolean}
+ {m_value.number_integer}
+ {m_value.number_unsigned}
+ {m_value.number_float}
+ discarded
+
+
+ *(m_value.object),view(simple)
+
+
+ *(m_value.array),view(simple)
+
+
+
+
+
+
+ {second}
+
+ second
+
+
+
+
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index c72867839f..89f5c22129 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -101,7 +101,7 @@ foreach(file ${files})
target_compile_definitions(${testcase} PRIVATE CATCH_CONFIG_FAST_COMPILE)
target_include_directories(${testcase} PRIVATE "thirdparty/catch")
- target_link_libraries(${testcase} ${JSON_TARGET_NAME})
+ target_link_libraries(${testcase} ${NLOHMANN_JSON_TARGET_NAME})
if(NOT MSVC)
set_target_properties(${testcase} PROPERTIES COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wno-float-equal")