Scope JSON_DLL_BUILD to shared lib target only (#1660)
Replaced directory-wide add_compile_definitions/add_definitions with
target_compile_definitions PRIVATE on the shared lib target, so
JSON_DLL_BUILD is not incorrectly applied to static and object libs.
Fixes #1634
diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt
index 86722ac..9658941 100644
--- a/src/lib_json/CMakeLists.txt
+++ b/src/lib_json/CMakeLists.txt
@@ -107,12 +107,6 @@
if(BUILD_SHARED_LIBS)
- if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
- add_compile_definitions(JSON_DLL_BUILD)
- else()
- add_definitions(-DJSON_DLL_BUILD)
- endif()
-
set(SHARED_LIB ${PROJECT_NAME}_lib)
add_library(${SHARED_LIB} SHARED ${PUBLIC_HEADERS} ${JSONCPP_SOURCES})
set_target_properties(${SHARED_LIB} PROPERTIES
@@ -122,6 +116,8 @@
POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS}
)
+ target_compile_definitions(${SHARED_LIB} PRIVATE JSON_DLL_BUILD)
+
# Set library's runtime search path on OSX
if(APPLE)
set_target_properties(${SHARED_LIB} PROPERTIES INSTALL_RPATH "@loader_path/.")