diff options
author | zhangxy988 <zhangxy988@gmail.com> | 2017-12-01T18·55-0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-01T18·55-0500 |
commit | 3562f9bb797ac8dd962e899c2633a45eae24522d (patch) | |
tree | 2b62c1629a0c3e636ac905ba7cbcc9ae71cf53c9 | |
parent | 79610733f46c888b56d05d7ca981350655c55a5d (diff) | |
parent | e98380282fdcd1573d478f380dafa08a15d2f9a5 (diff) |
Merge pull request #55 from rongjiecomputer/master
MSVC fixes
-rw-r--r-- | CMake/README.md | 12 | ||||
-rw-r--r-- | CMakeLists.txt | 15 | ||||
-rw-r--r-- | absl/copts.bzl | 2 | ||||
-rw-r--r-- | absl/time/clock.cc | 4 |
4 files changed, 26 insertions, 7 deletions
diff --git a/CMake/README.md b/CMake/README.md index 11160a9d66c2..0ae9c2686a88 100644 --- a/CMake/README.md +++ b/CMake/README.md @@ -43,6 +43,16 @@ set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ ${CMAKE_CXX_FLAGS}") + if (MSVC) + # /wd4005 macro-redefinition + # /wd4068 unknown pragma + # /wd4244 conversion from 'type1' to 'type2' + # /wd4267 conversion from 'size_t' to 'type2' + # /wd4800 force value to bool 'true' or 'false' (performance warning) + add_compile_options(/wd4005 /wd4068 /wd4244 /wd4267 /wd4800) + add_definitions(/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS) + endif() + add_subdirectory(googletest) add_subdirectory(cctz) add_subdirectory(abseil-cpp) @@ -51,7 +61,7 @@ target_link_libraries(my_exe absl::base absl::synchronization absl::strings) -You will need to create your own CMake files for cctz until https://github.com/google/cctz/pull/54 lands. As of this writing, that pull request requires -DBUILD_TESTING=OFF as it doesn't correctly export cctz's dependency on Google Benchmark. +As of this writing, that pull request requires -DBUILD_TESTING=OFF as it doesn't correctly export cctz's dependency on Google Benchmark. You will find here a non exhaustive list of absl public targets diff --git a/CMakeLists.txt b/CMakeLists.txt index e87f4a84abf6..c65805ebdfbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,17 @@ include(AbseilHelpers) # config options -set(ABSL_STD_CXX_FLAG "-std=c++11" CACHE STRING "c++ std flag (default: c++11)") +if (MSVC) + # /wd4005 macro-redefinition + # /wd4068 unknown pragma + # /wd4244 conversion from 'type1' to 'type2' + # /wd4267 conversion from 'size_t' to 'type2' + # /wd4800 force value to bool 'true' or 'false' (performance warning) + add_compile_options(/W3 /WX /wd4005 /wd4068 /wd4244 /wd4267 /wd4800) + add_definitions(/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS) +else() + set(ABSL_STD_CXX_FLAG "-std=c++11" CACHE STRING "c++ std flag (default: c++11)") +endif() @@ -66,9 +76,6 @@ check_target(gmock) # -fexceptions set(ABSL_EXCEPTIONS_FLAG "${CMAKE_CXX_EXCEPTIONS}") -# fix stuff -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FIX_MSVC} ${CMAKE_CXX_FLAGS}") - list(APPEND ABSL_TEST_COMMON_LIBRARIES gtest_main gtest diff --git a/absl/copts.bzl b/absl/copts.bzl index cc8db2f45108..f687f58ffa24 100644 --- a/absl/copts.bzl +++ b/absl/copts.bzl @@ -103,7 +103,9 @@ MSVC_FLAGS = [ "/wd4244", # conversion from 'type1' to 'type2', possible loss of data "/wd4267", # conversion from 'size_t' to 'type', possible loss of data "/wd4800", # forcing value to bool 'true' or 'false' (performance warning) + "/DNOMINMAX", # Don't define min and max macros (windows.h) "/DWIN32_LEAN_AND_MEAN", # Don't bloat namespace with incompatible winsock versions. + "/D_CRT_SECURE_NO_WARNINGS", # Don't warn about usage of insecure C functions ] MSVC_TEST_FLAGS = [ diff --git a/absl/time/clock.cc b/absl/time/clock.cc index 6398170d0d1a..9f2e0781868a 100644 --- a/absl/time/clock.cc +++ b/absl/time/clock.cc @@ -510,7 +510,7 @@ namespace { // Returns the maximum duration that SleepOnce() can sleep for. constexpr absl::Duration MaxSleep() { #ifdef _WIN32 - // Windows _sleep() takes unsigned long argument in milliseconds. + // Windows Sleep() takes unsigned long argument in milliseconds. return absl::Milliseconds( std::numeric_limits<unsigned long>::max()); // NOLINT(runtime/int) #else @@ -522,7 +522,7 @@ constexpr absl::Duration MaxSleep() { // REQUIRES: to_sleep <= MaxSleep(). void SleepOnce(absl::Duration to_sleep) { #ifdef _WIN32 - _sleep(to_sleep / absl::Milliseconds(1)); + Sleep(to_sleep / absl::Milliseconds(1)); #else struct timespec sleep_time = absl::ToTimespec(to_sleep); while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR) { |