diff --git a/.travis.yml b/.travis.yml index 59ba2ae..a0e84a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ language: cpp compiler: - gcc - clang -script: cmake -DJSONCPP_WITH_CMAKE_PACKAGE=$CMAKE_PKG -DJSONCPP_LIB_BUILD_SHARED=$SHARED_LIB -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE=$VERBOSE_MAKE . && make && make jsoncpp_check +script: cmake -DJSONCPP_WITH_CMAKE_PACKAGE=$CMAKE_PKG -DBUILD_SHARED_LIBS=$SHARED_LIB -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE=$VERBOSE_MAKE . && make && make jsoncpp_check env: matrix: - SHARED_LIB=ON STATIC_LIB=ON CMAKE_PKG=ON BUILD_TYPE=release VERBOSE_MAKE=false diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cf63ea..30038d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,8 @@ OPTION(JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post OPTION(JSONCPP_WITH_WARNING_AS_ERROR "Force compilation to fail if a warning occurs" OFF) OPTION(JSONCPP_WITH_PKGCONFIG_SUPPORT "Generate and install .pc files" ON) OPTION(JSONCPP_WITH_CMAKE_PACKAGE "Generate and install cmake package files" OFF) +OPTION(BUILD_SHARED_LIBS "Build jsoncpp_lib as a shared library." OFF) +OPTION(BUILD_STATIC_LIBS "Build jsoncpp_lib static library." ON) # Ensures that CMAKE_BUILD_TYPE is visible in cmake-gui on Unix IF(NOT WIN32) diff --git a/README.md b/README.md index e728973..2940852 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Steps for generating solution/makefiles using `cmake-gui`: * Make "source code" point to the source directory. * Make "where to build the binary" point to the directory to use for the build. * Click on the "Grouped" check box. -* Review JsonCpp build options (tick `JSONCPP_LIB_BUILD_SHARED` to build as a +* Review JsonCpp build options (tick `BUILD_SHARED_LIBS` to build as a dynamic library). * Click the configure button at the bottom, then the generate button. * The generated solution/makefiles can be found in the binary directory. @@ -67,7 +67,7 @@ Alternatively, from the command-line on Unix in the source directory: mkdir -p build/debug cd build/debug - cmake -DCMAKE_BUILD_TYPE=debug -DJSONCPP_LIB_BUILD_STATIC=ON -DJSONCPP_LIB_BUILD_SHARED=OFF -G "Unix Makefiles" ../.. + cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF -G "Unix Makefiles" ../.. make Running `cmake -`" will display the list of available generators (passed using diff --git a/dev.makefile b/dev.makefile index 710aafe..e289266 100644 --- a/dev.makefile +++ b/dev.makefile @@ -16,7 +16,7 @@ dox: # Then 'git add -A' and 'git push' in jsoncpp-docs. build: mkdir -p build/debug - cd build/debug; cmake -DCMAKE_BUILD_TYPE=debug -DJSONCPP_LIB_BUILD_SHARED=ON -G "Unix Makefiles" ../.. + cd build/debug; cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_SHARED_LIBS=ON -G "Unix Makefiles" ../.. make -C build/debug # Currently, this depends on include/json/version.h generated diff --git a/devtools/agent_vmw7.json b/devtools/agent_vmw7.json index 38b50d9..086ad9a 100644 --- a/devtools/agent_vmw7.json +++ b/devtools/agent_vmw7.json @@ -19,8 +19,8 @@ }, {"name": "shared_dll", "variables": [ - ["JSONCPP_LIB_BUILD_SHARED=true"], - ["JSONCPP_LIB_BUILD_SHARED=false"] + ["BUILD_SHARED_LIBS=true"], + ["BUILD_SHARED_LIBS=false"] ] }, {"name": "build_type", diff --git a/devtools/agent_vmxp.json b/devtools/agent_vmxp.json index 61f5a4c..997aa5e 100644 --- a/devtools/agent_vmxp.json +++ b/devtools/agent_vmxp.json @@ -12,8 +12,8 @@ }, {"name": "shared_dll", "variables": [ - ["JSONCPP_LIB_BUILD_SHARED=true"], - ["JSONCPP_LIB_BUILD_SHARED=false"] + ["BUILD_SHARED_LIBS=true"], + ["BUILD_SHARED_LIBS=false"] ] }, {"name": "build_type", diff --git a/src/jsontestrunner/CMakeLists.txt b/src/jsontestrunner/CMakeLists.txt index a2e48d6..820a7cd 100644 --- a/src/jsontestrunner/CMakeLists.txt +++ b/src/jsontestrunner/CMakeLists.txt @@ -1,18 +1,15 @@ FIND_PACKAGE(PythonInterp 2.6) -IF(JSONCPP_LIB_BUILD_SHARED) - ADD_DEFINITIONS( -DJSON_DLL ) -ENDIF(JSONCPP_LIB_BUILD_SHARED) - ADD_EXECUTABLE(jsontestrunner_exe main.cpp ) -IF(JSONCPP_LIB_BUILD_SHARED) +IF(BUILD_SHARED_LIBS) + ADD_DEFINITIONS( -DJSON_DLL ) TARGET_LINK_LIBRARIES(jsontestrunner_exe jsoncpp_lib) -ELSE(JSONCPP_LIB_BUILD_SHARED) +ELSE(BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(jsontestrunner_exe jsoncpp_lib_static) -ENDIF(JSONCPP_LIB_BUILD_SHARED) +ENDIF(BUILD_SHARED_LIBS) SET_TARGET_PROPERTIES(jsontestrunner_exe PROPERTIES OUTPUT_NAME jsontestrunner_exe) diff --git a/src/lib_json/CMakeLists.txt b/src/lib_json/CMakeLists.txt index 18d127b..97b7019 100644 --- a/src/lib_json/CMakeLists.txt +++ b/src/lib_json/CMakeLists.txt @@ -1,10 +1,3 @@ -OPTION(JSONCPP_LIB_BUILD_SHARED "Build jsoncpp_lib as a shared library." OFF) -OPTION(JSONCPP_LIB_BUILD_STATIC "Build jsoncpp_lib static library." ON) - -IF(BUILD_SHARED_LIBS) - SET(JSONCPP_LIB_BUILD_SHARED ON) -ENDIF(BUILD_SHARED_LIBS) - if( CMAKE_COMPILER_IS_GNUCXX ) #Get compiler version. execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion @@ -46,7 +39,7 @@ ELSE(JSONCPP_WITH_CMAKE_PACKAGE) SET(INSTALL_EXPORT) ENDIF(JSONCPP_WITH_CMAKE_PACKAGE) -IF(JSONCPP_LIB_BUILD_SHARED) +IF(BUILD_SHARED_LIBS) ADD_DEFINITIONS( -DJSON_DLL_BUILD ) ADD_LIBRARY(jsoncpp_lib SHARED ${PUBLIC_HEADERS} ${jsoncpp_sources}) SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR}) @@ -65,7 +58,7 @@ IF(JSONCPP_LIB_BUILD_SHARED) ENDIF() -IF(JSONCPP_LIB_BUILD_STATIC) +IF(BUILD_STATIC_LIBS) ADD_LIBRARY(jsoncpp_lib_static STATIC ${PUBLIC_HEADERS} ${jsoncpp_sources}) SET_TARGET_PROPERTIES( jsoncpp_lib_static PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR}) SET_TARGET_PROPERTIES( jsoncpp_lib_static PROPERTIES OUTPUT_NAME jsoncpp ) diff --git a/src/test_lib_json/CMakeLists.txt b/src/test_lib_json/CMakeLists.txt index f925ce0..f54c85f 100644 --- a/src/test_lib_json/CMakeLists.txt +++ b/src/test_lib_json/CMakeLists.txt @@ -1,9 +1,5 @@ # vim: et ts=4 sts=4 sw=4 tw=0 -IF(JSONCPP_LIB_BUILD_SHARED) - ADD_DEFINITIONS( -DJSON_DLL ) -ENDIF(JSONCPP_LIB_BUILD_SHARED) - ADD_EXECUTABLE( jsoncpp_test jsontest.cpp jsontest.h @@ -11,11 +7,12 @@ ADD_EXECUTABLE( jsoncpp_test ) -IF(JSONCPP_LIB_BUILD_SHARED) +IF(BUILD_SHARED_LIBS) + ADD_DEFINITIONS( -DJSON_DLL ) TARGET_LINK_LIBRARIES(jsoncpp_test jsoncpp_lib) -ELSE(JSONCPP_LIB_BUILD_SHARED) +ELSE(BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(jsoncpp_test jsoncpp_lib_static) -ENDIF(JSONCPP_LIB_BUILD_SHARED) +ENDIF(BUILD_SHARED_LIBS) # another way to solve issue #90 #set_target_properties(jsoncpp_test PROPERTIES COMPILE_FLAGS -ffloat-store) @@ -23,19 +20,19 @@ ENDIF(JSONCPP_LIB_BUILD_SHARED) # Run unit tests in post-build # (default cmake workflow hides away the test result into a file, resulting in poor dev workflow?!?) IF(JSONCPP_WITH_POST_BUILD_UNITTEST) - IF(JSONCPP_LIB_BUILD_SHARED) + IF(BUILD_SHARED_LIBS) # First, copy the shared lib, for Microsoft. # Then, run the test executable. ADD_CUSTOM_COMMAND( TARGET jsoncpp_test POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ COMMAND $) - ELSE(JSONCPP_LIB_BUILD_SHARED) + ELSE(BUILD_SHARED_LIBS) # Just run the test executable. ADD_CUSTOM_COMMAND( TARGET jsoncpp_test POST_BUILD COMMAND $) - ENDIF(JSONCPP_LIB_BUILD_SHARED) + ENDIF(BUILD_SHARED_LIBS) ENDIF(JSONCPP_WITH_POST_BUILD_UNITTEST) SET_TARGET_PROPERTIES(jsoncpp_test PROPERTIES OUTPUT_NAME jsoncpp_test)