Kaynağa Gözat

Merge branch 'master' into gltfBufferViewSizeFix

Kim Kulling 5 yıl önce
ebeveyn
işleme
c0e58c1895

+ 47 - 13
.github/workflows/ccpp.yml

@@ -8,30 +8,39 @@ on:
 
 
 jobs:
 jobs:
   job:
   job:
-    name: ${{ matrix.os }}-${{ matrix.cxx }}-build-and-test
+    name: ${{ matrix.name }}-build-and-test
     runs-on: ${{ matrix.os }}
     runs-on: ${{ matrix.os }}
     strategy:
     strategy:
       fail-fast: false
       fail-fast: false
       matrix:
       matrix:
-        name: [ubuntu-gcc, macos-clang, windows-msvc, ubuntu-clang]
+        name: [ubuntu-latest-g++, macos-latest-clang++, windows-latest-cl.exe, ubuntu-latest-clang++, ubuntu-gcc-hunter, macos-clang-hunter, windows-msvc-hunter]
         # For Windows msvc, for Linux and macOS let's use the clang compiler, use gcc for Linux.
         # For Windows msvc, for Linux and macOS let's use the clang compiler, use gcc for Linux.
         include:
         include:
-          - name: windows-msvc
+          - name: windows-latest-cl.exe
             os: windows-latest
             os: windows-latest
             cxx: cl.exe
             cxx: cl.exe
             cc: cl.exe
             cc: cl.exe
-          - name: ubuntu-clang
+          - name: ubuntu-latest-clang++
             os: ubuntu-latest
             os: ubuntu-latest
             cxx: clang++
             cxx: clang++
             cc: clang
             cc: clang
-          - name: macos-clang
+          - name: macos-latest-clang++
             os: macos-latest
             os: macos-latest
             cxx: clang++
             cxx: clang++
             cc: clang
             cc: clang
-          - name: ubuntu-gcc
+          - name: ubuntu-latest-g++
             os: ubuntu-latest
             os: ubuntu-latest
             cxx: g++
             cxx: g++
             cc: gcc
             cc: gcc
+          - name: ubuntu-gcc-hunter
+            os: ubuntu-latest
+            toolchain: ninja-gcc-cxx17-fpic
+          - name: macos-clang-hunter
+            os: macos-latest
+            toolchain: ninja-clang-cxx17-fpic
+          - name: windows-msvc-hunter
+            os: windows-latest
+            toolchain: ninja-vs-win64-cxx17
 
 
     steps:
     steps:
     - uses: actions/checkout@v2
     - uses: actions/checkout@v2
@@ -40,14 +49,29 @@ jobs:
     
     
     - uses: ilammy/msvc-dev-cmd@v1
     - uses: ilammy/msvc-dev-cmd@v1
     
     
-    - uses: lukka/set-shell-env@v1
+    - name: Set Compiler Environment
+      if: "!endsWith(matrix.name, 'hunter')"
+      uses: lukka/set-shell-env@v1
       with:
       with:
         CXX: ${{ matrix.cxx }}
         CXX: ${{ matrix.cxx }}
         CC: ${{ matrix.cc }}
         CC: ${{ matrix.cc }}
 
 
+    - name: Set Compiler Environment for Hunter on Windows
+      if: startsWith(matrix.name, 'windows') && endsWith(matrix.name, 'hunter')
+      uses: lukka/set-shell-env@v1
+      with:
+        VS160COMNTOOLS: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools
+
+    - name: Checkout Hunter toolchains
+      if: endsWith(matrix.name, 'hunter')
+      uses: actions/checkout@v2
+      with:
+        repository: cpp-pm/polly
+        path: cmake/polly     
+
     - name: Cache DX SDK
     - name: Cache DX SDK
       id: dxcache
       id: dxcache
-      if: matrix.name == 'windows-msvc'
+      if: contains(matrix.name, 'windows')
       uses: actions/cache@v2
       uses: actions/cache@v2
       with:
       with:
         path: '${{ github.workspace }}/DX_SDK'
         path: '${{ github.workspace }}/DX_SDK'
@@ -56,16 +80,21 @@ jobs:
           ${{ runner.os }}-DX_SDK
           ${{ runner.os }}-DX_SDK
 
 
     - name: Download DXSetup
     - name: Download DXSetup
-      if: matrix.name == 'windows-msvc' && steps.dxcache.outputs.cache-hit != 'true'
+      if: contains(matrix.name, 'windows') && steps.dxcache.outputs.cache-hit != 'true'
       run: |
       run: |
         curl -s -o DXSDK_Jun10.exe --location https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe
         curl -s -o DXSDK_Jun10.exe --location https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe
         cmd.exe /c start /wait .\DXSDK_Jun10.exe /U /O /F /S /P "${{ github.workspace }}\DX_SDK"
         cmd.exe /c start /wait .\DXSDK_Jun10.exe /U /O /F /S /P "${{ github.workspace }}\DX_SDK"
 
 
     - name: Set Windows specific CMake arguments
     - name: Set Windows specific CMake arguments
-      if: matrix.name == 'windows-msvc'
+      if: contains(matrix.name, 'windows')
       id: windows_extra_cmake_args
       id: windows_extra_cmake_args
-      run: echo "::set-output name=args::'-DASSIMP_BUILD_ASSIMP_TOOLS=1 -DASSIMP_BUILD_ASSIMP_VIEW=1'"
+      run: echo "::set-output name=args::-DASSIMP_BUILD_ASSIMP_TOOLS=1 -DASSIMP_BUILD_ASSIMP_VIEW=1"
     
     
+    - name: Set Hunter specific CMake arguments
+      if: contains(matrix.name, 'hunter')
+      id: hunter_extra_cmake_args
+      run: echo "::set-output name=args::-DBUILD_SHARED_LIBS=OFF -DASSIMP_HUNTER_ENABLED=ON -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/cmake/polly/${{ matrix.toolchain }}.cmake"
+
     - name: configure and build
     - name: configure and build
       uses: lukka/run-cmake@v2
       uses: lukka/run-cmake@v2
       env:
       env:
@@ -74,12 +103,17 @@ jobs:
       with:
       with:
         cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
         cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
         cmakeListsTxtPath: '${{ github.workspace }}/CMakeLists.txt'
         cmakeListsTxtPath: '${{ github.workspace }}/CMakeLists.txt'
-        cmakeAppendedArgs: '-GNinja -DCMAKE_BUILD_TYPE=Release ${{ steps.windows_extra_cmake_args.outputs.args }}'
+        cmakeAppendedArgs: '-GNinja -DCMAKE_BUILD_TYPE=Release ${{ steps.windows_extra_cmake_args.outputs.args }} ${{ steps.hunter_extra_cmake_args.outputs.args }}'
         buildWithCMakeArgs: '-- -v'
         buildWithCMakeArgs: '-- -v'
         buildDirectory: '${{ github.workspace }}/build/'
         buildDirectory: '${{ github.workspace }}/build/'
         
         
+    - name: Exclude certain tests in Hunter specific builds
+      if: contains(matrix.name, 'hunter')
+      id: hunter_extra_test_args
+      run: echo "::set-output name=args::--gtest_filter=-utOpenGEXImportExport.Importissue1340_EmptyCameraObject:utColladaZaeImportExport.importBlenFromFileTest"
+
     - name: test
     - name: test
-      run: cd build/bin && ./unit
+      run: cd build/bin && ./unit ${{ steps.hunter_extra_test_args.outputs.args }}
       shell: bash
       shell: bash
 
 
     - uses: actions/upload-artifact@v2
     - uses: actions/upload-artifact@v2

+ 2 - 2
CMakeLists.txt

@@ -45,8 +45,8 @@ option(ASSIMP_HUNTER_ENABLED "Enable Hunter package manager support" OFF)
 IF(ASSIMP_HUNTER_ENABLED)
 IF(ASSIMP_HUNTER_ENABLED)
   include("cmake/HunterGate.cmake")
   include("cmake/HunterGate.cmake")
   HunterGate(
   HunterGate(
-    URL "https://github.com/cpp-pm/hunter/archive/v0.23.261.tar.gz"
-    SHA1 "1540dad7b97c849784a09e8c452ba811c9f71ba2"
+    URL "https://github.com/cpp-pm/hunter/archive/v0.23.269.tar.gz"
+    SHA1 "64024b7b95b4c86d50ae05b926814448c93a70a0"
   )
   )
 
 
   add_definitions(-DASSIMP_USE_HUNTER)
   add_definitions(-DASSIMP_USE_HUNTER)

+ 1 - 1
Readme.md

@@ -70,7 +70,7 @@ The source code is organized in the following way:
 For more information, visit [our website](http://assimp.org/). Or check out the `./doc`- folder, which contains the official documentation in HTML format.
 For more information, visit [our website](http://assimp.org/). Or check out the `./doc`- folder, which contains the official documentation in HTML format.
 (CHMs for Windows are included in some release packages and should be located right here in the root folder).
 (CHMs for Windows are included in some release packages and should be located right here in the root folder).
 
 
-If the docs don't solve your problem, ask on [StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest). If you think you found a bug, please open an issue on Github.
+If the docs don't solve your problem, ask on [StackOverflow with the assimp-tag](http://stackoverflow.com/questions/tagged/assimp?sort=newest). If you think you found a bug, please open an issue on Github.
 
 
 For development discussions, there is also a (very low-volume) mailing list, _assimp-discussions_
 For development discussions, there is also a (very low-volume) mailing list, _assimp-discussions_
   [(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions)
   [(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions)

+ 15 - 16
cmake/HunterGate.cmake

@@ -1,4 +1,4 @@
-# Copyright (c) 2013-2018, Ruslan Baratov
+# Copyright (c) 2013-2019, Ruslan Baratov
 # All rights reserved.
 # All rights reserved.
 #
 #
 # Redistribution and use in source and binary forms, with or without
 # Redistribution and use in source and binary forms, with or without
@@ -60,7 +60,7 @@ option(HUNTER_STATUS_PRINT "Print working status" ON)
 option(HUNTER_STATUS_DEBUG "Print a lot info" OFF)
 option(HUNTER_STATUS_DEBUG "Print a lot info" OFF)
 option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON)
 option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON)
 
 
-set(HUNTER_WIKI "https://github.com/ruslo/hunter/wiki")
+set(HUNTER_ERROR_PAGE "https://docs.hunter.sh/en/latest/reference/errors")
 
 
 function(hunter_gate_status_print)
 function(hunter_gate_status_print)
   if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG)
   if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG)
@@ -79,9 +79,9 @@ function(hunter_gate_status_debug)
   endif()
   endif()
 endfunction()
 endfunction()
 
 
-function(hunter_gate_wiki wiki_page)
-  message("------------------------------ WIKI -------------------------------")
-  message("    ${HUNTER_WIKI}/${wiki_page}")
+function(hunter_gate_error_page error_page)
+  message("------------------------------ ERROR ------------------------------")
+  message("    ${HUNTER_ERROR_PAGE}/${error_page}.html")
   message("-------------------------------------------------------------------")
   message("-------------------------------------------------------------------")
   message("")
   message("")
   message(FATAL_ERROR "")
   message(FATAL_ERROR "")
@@ -94,14 +94,13 @@ function(hunter_gate_internal_error)
   endforeach()
   endforeach()
   message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
   message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
   message("")
   message("")
-  hunter_gate_wiki("error.internal")
+  hunter_gate_error_page("error.internal")
 endfunction()
 endfunction()
 
 
 function(hunter_gate_fatal_error)
 function(hunter_gate_fatal_error)
-  cmake_parse_arguments(hunter "" "WIKI" "" "${ARGV}")
-  string(COMPARE EQUAL "${hunter_WIKI}" "" have_no_wiki)
-  if(have_no_wiki)
-    hunter_gate_internal_error("Expected wiki")
+  cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}")
+  if("${hunter_ERROR_PAGE}" STREQUAL "")
+    hunter_gate_internal_error("Expected ERROR_PAGE")
   endif()
   endif()
   message("")
   message("")
   foreach(x ${hunter_UNPARSED_ARGUMENTS})
   foreach(x ${hunter_UNPARSED_ARGUMENTS})
@@ -109,11 +108,11 @@ function(hunter_gate_fatal_error)
   endforeach()
   endforeach()
   message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
   message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
   message("")
   message("")
-  hunter_gate_wiki("${hunter_WIKI}")
+  hunter_gate_error_page("${hunter_ERROR_PAGE}")
 endfunction()
 endfunction()
 
 
 function(hunter_gate_user_error)
 function(hunter_gate_user_error)
-  hunter_gate_fatal_error(${ARGV} WIKI "error.incorrect.input.data")
+  hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data")
 endfunction()
 endfunction()
 
 
 function(hunter_gate_self root version sha1 result)
 function(hunter_gate_self root version sha1 result)
@@ -195,7 +194,7 @@ function(hunter_gate_detect_root)
 
 
   hunter_gate_fatal_error(
   hunter_gate_fatal_error(
       "Can't detect HUNTER_ROOT"
       "Can't detect HUNTER_ROOT"
-      WIKI "error.detect.hunter.root"
+      ERROR_PAGE "error.detect.hunter.root"
   )
   )
 endfunction()
 endfunction()
 
 
@@ -214,7 +213,7 @@ function(hunter_gate_download dir)
         "Settings:"
         "Settings:"
         "  HUNTER_ROOT: ${HUNTER_GATE_ROOT}"
         "  HUNTER_ROOT: ${HUNTER_GATE_ROOT}"
         "  HUNTER_SHA1: ${HUNTER_GATE_SHA1}"
         "  HUNTER_SHA1: ${HUNTER_GATE_SHA1}"
-        WIKI "error.run.install"
+        ERROR_PAGE "error.run.install"
     )
     )
   endif()
   endif()
   string(COMPARE EQUAL "${dir}" "" is_bad)
   string(COMPARE EQUAL "${dir}" "" is_bad)
@@ -400,7 +399,7 @@ macro(HunterGate)
       hunter_gate_fatal_error(
       hunter_gate_fatal_error(
           "Please set HunterGate *before* 'project' command. "
           "Please set HunterGate *before* 'project' command. "
           "Detected project: ${PROJECT_NAME}"
           "Detected project: ${PROJECT_NAME}"
-          WIKI "error.huntergate.before.project"
+          ERROR_PAGE "error.huntergate.before.project"
       )
       )
     endif()
     endif()
 
 
@@ -470,7 +469,7 @@ macro(HunterGate)
             "HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces."
             "HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces."
             "Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error"
             "Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error"
             "(Use at your own risk!)"
             "(Use at your own risk!)"
-            WIKI "error.spaces.in.hunter.root"
+            ERROR_PAGE "error.spaces.in.hunter.root"
         )
         )
       endif()
       endif()
     endif()
     endif()

+ 0 - 8
code/AssetLib/glTF/glTFAsset.h

@@ -60,19 +60,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <algorithm>
 #include <algorithm>
 #include <stdexcept>
 #include <stdexcept>
 
 
-#ifndef RAPIDJSON_HAS_STDSTRING
-#define RAPIDJSON_HAS_STDSTRING 1
-#endif
-
 #if (__GNUC__ == 8 && __GNUC_MINOR__ >= 0)
 #if (__GNUC__ == 8 && __GNUC_MINOR__ >= 0)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wclass-memaccess"
 #pragma GCC diagnostic ignored "-Wclass-memaccess"
 #endif
 #endif
 
 
-#ifndef RAPIDJSON_NOMEMBERITERATORCLASS
-#define RAPIDJSON_NOMEMBERITERATORCLASS
-#endif
-
 #include <rapidjson/rapidjson.h>
 #include <rapidjson/rapidjson.h>
 #include <rapidjson/document.h>
 #include <rapidjson/document.h>
 #include <rapidjson/error/en.h>
 #include <rapidjson/error/en.h>

+ 0 - 2
code/AssetLib/glTF/glTFCommon.h

@@ -52,8 +52,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
 
 
-#define RAPIDJSON_HAS_STDSTRING 1
-#define RAPIDJSON_NOMEMBERITERATORCLASS
 #include <rapidjson/document.h>
 #include <rapidjson/document.h>
 #include <rapidjson/error/en.h>
 #include <rapidjson/error/en.h>
 #include <rapidjson/rapidjson.h>
 #include <rapidjson/rapidjson.h>

+ 0 - 8
code/AssetLib/glTF2/glTF2Asset.h

@@ -62,19 +62,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
 
 
-#ifndef RAPIDJSON_HAS_STDSTRING
-#define RAPIDJSON_HAS_STDSTRING 1
-#endif
-
 #if (__GNUC__ == 8 && __GNUC_MINOR__ >= 0)
 #if (__GNUC__ == 8 && __GNUC_MINOR__ >= 0)
 #pragma GCC diagnostic push
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wclass-memaccess"
 #pragma GCC diagnostic ignored "-Wclass-memaccess"
 #endif
 #endif
 
 
-#ifndef RAPIDJSON_NOMEMBERITERATORCLASS
-#define RAPIDJSON_NOMEMBERITERATORCLASS
-#endif 
-
 #include <rapidjson/document.h>
 #include <rapidjson/document.h>
 #include <rapidjson/error/en.h>
 #include <rapidjson/error/en.h>
 #include <rapidjson/rapidjson.h>
 #include <rapidjson/rapidjson.h>

+ 2 - 0
code/CMakeLists.txt

@@ -1055,6 +1055,8 @@ IF(ASSIMP_HUNTER_ENABLED)
 ELSE()
 ELSE()
   INCLUDE_DIRECTORIES( "../contrib/rapidjson/include" )
   INCLUDE_DIRECTORIES( "../contrib/rapidjson/include" )
   INCLUDE_DIRECTORIES( "../contrib" )
   INCLUDE_DIRECTORIES( "../contrib" )
+  ADD_DEFINITIONS( -DRAPIDJSON_HAS_STDSTRING=1 )
+  ADD_DEFINITIONS( -DRAPIDJSON_NOMEMBERITERATORCLASS )
 ENDIF()
 ENDIF()
 
 
 # VC2010 fixes
 # VC2010 fixes

+ 17 - 5
test/CMakeLists.txt

@@ -39,12 +39,18 @@
 cmake_minimum_required( VERSION 3.0 )
 cmake_minimum_required( VERSION 3.0 )
 
 
 INCLUDE_DIRECTORIES(
 INCLUDE_DIRECTORIES(
-    ${Assimp_SOURCE_DIR}/contrib/gtest/include
-    ${Assimp_SOURCE_DIR}/contrib/gtest/
     ${Assimp_SOURCE_DIR}/test/unit
     ${Assimp_SOURCE_DIR}/test/unit
     ${Assimp_SOURCE_DIR}/include
     ${Assimp_SOURCE_DIR}/include
     ${Assimp_SOURCE_DIR}/code
     ${Assimp_SOURCE_DIR}/code
 )
 )
+
+if(NOT ASSIMP_HUNTER_ENABLED)
+  INCLUDE_DIRECTORIES(
+    ${Assimp_SOURCE_DIR}/contrib/gtest/include
+    ${Assimp_SOURCE_DIR}/contrib/gtest/
+  )
+endif()
+
 if (MSVC)
 if (MSVC)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING")
 endif()
 endif()
@@ -197,7 +203,6 @@ SOURCE_GROUP( UnitTests\\Math         FILES  ${MATH} )
 SOURCE_GROUP( UnitTests\\PostProcess  FILES  ${POST_PROCESSES})
 SOURCE_GROUP( UnitTests\\PostProcess  FILES  ${POST_PROCESSES})
 
 
 add_executable( unit
 add_executable( unit
-    ../contrib/gtest/src/gtest-all.cc
     unit/CCompilerTest.c
     unit/CCompilerTest.c
     unit/Main.cpp
     unit/Main.cpp
     ../code/Common/Version.cpp
     ../code/Common/Version.cpp
@@ -208,6 +213,14 @@ add_executable( unit
     ${POST_PROCESSES}
     ${POST_PROCESSES}
 )
 )
 
 
+if(ASSIMP_HUNTER_ENABLED)
+    hunter_add_package(GTest)
+    find_package(GTest CONFIG REQUIRED)
+    target_link_libraries(unit GTest::gtest_main GTest::gmock)
+else()
+    target_sources(unit PUBLIC ../contrib/gtest/src/gtest-all.cc)
+endif()
+
 TARGET_USE_COMMON_OUTPUT_DIRECTORY(unit)
 TARGET_USE_COMMON_OUTPUT_DIRECTORY(unit)
 
 
 add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models")
 add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models")
@@ -222,7 +235,7 @@ ELSE()
 ENDIF()
 ENDIF()
 
 
 IF(MSVC)
 IF(MSVC)
-		add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 ENDIF()
 ENDIF()
 
 
 target_link_libraries( unit assimp ${platform_libs} )
 target_link_libraries( unit assimp ${platform_libs} )
@@ -230,4 +243,3 @@ target_link_libraries( unit assimp ${platform_libs} )
 add_subdirectory(headercheck)
 add_subdirectory(headercheck)
 
 
 add_test( unittests unit )
 add_test( unittests unit )
-

+ 7 - 0
test/unit/UnitTestPCH.h

@@ -43,7 +43,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 // We need to be sure to have the same STL settings as Assimp
 // We need to be sure to have the same STL settings as Assimp
 
 
 #include <assimp/cimport.h>
 #include <assimp/cimport.h>
+#ifdef _MSC_VER
+#  pragma warning(push)
+#  pragma warning(disable : 4389)
+#endif
 #include <gtest/gtest.h>
 #include <gtest/gtest.h>
+#ifdef _MSC_VER
+#  pragma warning(pop)
+#endif
 #include <memory>
 #include <memory>
 #include <math.h>
 #include <math.h>
 #include "UTLogStream.h"
 #include "UTLogStream.h"