Permalink
Browse files

- CMake: added option to turn fail compilation if warning occurs, and…

… warning level 4 with MSVC.

- Fixed some warnings

git-svn-id: svn://svn.code.sf.net/p/jsoncpp/code@268 1f120ed1-78a5-a849-adca-83f0a9e25bb6
  • Loading branch information...
1 parent 83ae8bf commit b2c30f96f99b60420567006335e88c6d50c9bfe9 blep committed May 9, 2013
View
19 trunk/jsoncpp/CMakeLists.txt
@@ -4,6 +4,7 @@ ENABLE_TESTING()
OPTION(JSONCPP_WITH_TESTS "Compile and run JsonCpp test executables" ON)
OPTION(JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" ON)
+OPTION(JSONCPP_WITH_WARNING_AS_ERROR "Force compilation to fail if a warning occurs" OFF)
# Ensures that CMAKE_BUILD_TYPE is visible in cmake-gui on Unix
IF(NOT WIN32)
@@ -61,9 +62,27 @@ MESSAGE(STATUS "JsonCpp Version: ${JSONCPP_VERSION_MAJOR}.${JSONCPP_VERSION_MINO
CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/src/lib_json/version.h.in"
"${PROJECT_SOURCE_DIR}/include/json/version.h" )
+macro(UseCompilationWarningAsError)
+ if ( MSVC )
+ # Only enabled in debug because some old versions of VS STL generate
+ # warnings when compiled in release configuration.
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX ")
+ endif( MSVC )
+endmacro()
+
# Include our configuration header
INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include )
+if ( MSVC )
+ # Only enabled in debug because some old versions of VS STL generate
+ # unreachable code warning when compiled in release configuration.
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ")
+endif( MSVC )
+
+IF(JSONCPP_WITH_WARNING_AS_ERROR)
+ UseCompilationWarningAsError()
+ENDIF(JSONCPP_WITH_WARNING_AS_ERROR)
+
# Build the different applications
ADD_SUBDIRECTORY( src )
View
6 trunk/jsoncpp/src/lib_json/json_value.cpp
@@ -1805,7 +1805,7 @@ Path::makePath( const std::string &path,
void
-Path::addPathInArg( const std::string &path,
+Path::addPathInArg( const std::string &/*path*/,
const InArgs &in,
InArgs::const_iterator &itInArg,
PathArgument::Kind kind )
@@ -1826,8 +1826,8 @@ Path::addPathInArg( const std::string &path,
void
-Path::invalidPath( const std::string &path,
- int location )
+Path::invalidPath( const std::string &/*path*/,
+ int /*location*/ )
{
// Error: invalid path.
}
View
10 trunk/jsoncpp/src/test_lib_json/jsontest.cpp
@@ -480,10 +480,10 @@ Runner::runCommandLine( int argc, const char *argv[] ) const
}
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) && defined(_DEBUG)
// Hook MSVCRT assertions to prevent dialog from appearing
static int
-msvcrtSilentReportHook( int reportType, char *message, int *returnValue )
+msvcrtSilentReportHook( int reportType, char *message, int * /*returnValue*/ )
{
// The default CRT handling of error and assertion is to display
// an error dialog to the user.
@@ -517,9 +517,11 @@ msvcrtSilentReportHook( int reportType, char *message, int *returnValue )
void
Runner::preventDialogOnCrash()
{
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) && defined(_DEBUG)
// Install a hook to prevent MSVCRT error and assertion from
- // popping a dialog.
+ // popping a dialog
+ // This function a NO-OP in release configuration
+ // (which cause warning since msvcrtSilentReportHook is not referenced)
_CrtSetReportHook( &msvcrtSilentReportHook );
#endif // if defined(_MSC_VER)
View
2 trunk/jsoncpp/src/test_lib_json/jsontest.h
@@ -193,7 +193,7 @@ namespace JsonTest {
if ( static_cast< U >( expected ) != actual )
{
result.addFailure( file, line, expr );
- result << "Expected: " << expected << "\n";
+ result << "Expected: " << static_cast< U >( expected ) << "\n";
result << "Actual : " << actual;
}
return result;

0 comments on commit b2c30f9

Please sign in to comment.