Skip to content
Snippets Groups Projects
Commit 79ae60ed authored by Loo Rong Jie's avatar Loo Rong Jie
Browse files

MSVC fixes

parent 79610733
No related branches found
No related tags found
No related merge requests found
...@@ -43,6 +43,11 @@ ...@@ -43,6 +43,11 @@
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ ${CMAKE_CXX_FLAGS}") set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ ${CMAKE_CXX_FLAGS}")
if (MSVC)
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(googletest)
add_subdirectory(cctz) add_subdirectory(cctz)
add_subdirectory(abseil-cpp) add_subdirectory(abseil-cpp)
...@@ -51,7 +56,7 @@ ...@@ -51,7 +56,7 @@
target_link_libraries(my_exe absl::base absl::synchronization absl::strings) 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 You will find here a non exhaustive list of absl public targets
......
...@@ -26,7 +26,12 @@ include(AbseilHelpers) ...@@ -26,7 +26,12 @@ include(AbseilHelpers)
# config options # config options
set(ABSL_STD_CXX_FLAG "-std=c++11" CACHE STRING "c++ std flag (default: c++11)") if (MSVC)
add_definitions(/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS)
add_compile_options(/W3 /WX /wd4005 /wd4068 /wd4244 /wd4267 /wd4800)
else()
set(ABSL_STD_CXX_FLAG "-std=c++11" CACHE STRING "c++ std flag (default: c++11)")
endif()
...@@ -66,9 +71,6 @@ check_target(gmock) ...@@ -66,9 +71,6 @@ check_target(gmock)
# -fexceptions # -fexceptions
set(ABSL_EXCEPTIONS_FLAG "${CMAKE_CXX_EXCEPTIONS}") 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 list(APPEND ABSL_TEST_COMMON_LIBRARIES
gtest_main gtest_main
gtest gtest
......
...@@ -103,7 +103,9 @@ MSVC_FLAGS = [ ...@@ -103,7 +103,9 @@ MSVC_FLAGS = [
"/wd4244", # conversion from 'type1' to 'type2', possible loss of data "/wd4244", # conversion from 'type1' to 'type2', possible loss of data
"/wd4267", # conversion from 'size_t' to 'type', 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) "/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. "/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 = [ MSVC_TEST_FLAGS = [
......
...@@ -510,7 +510,7 @@ namespace { ...@@ -510,7 +510,7 @@ namespace {
// Returns the maximum duration that SleepOnce() can sleep for. // Returns the maximum duration that SleepOnce() can sleep for.
constexpr absl::Duration MaxSleep() { constexpr absl::Duration MaxSleep() {
#ifdef _WIN32 #ifdef _WIN32
// Windows _sleep() takes unsigned long argument in milliseconds. // Windows Sleep() takes unsigned long argument in milliseconds.
return absl::Milliseconds( return absl::Milliseconds(
std::numeric_limits<unsigned long>::max()); // NOLINT(runtime/int) std::numeric_limits<unsigned long>::max()); // NOLINT(runtime/int)
#else #else
...@@ -522,7 +522,7 @@ constexpr absl::Duration MaxSleep() { ...@@ -522,7 +522,7 @@ constexpr absl::Duration MaxSleep() {
// REQUIRES: to_sleep <= MaxSleep(). // REQUIRES: to_sleep <= MaxSleep().
void SleepOnce(absl::Duration to_sleep) { void SleepOnce(absl::Duration to_sleep) {
#ifdef _WIN32 #ifdef _WIN32
_sleep(to_sleep / absl::Milliseconds(1)); Sleep(to_sleep / absl::Milliseconds(1));
#else #else
struct timespec sleep_time = absl::ToTimespec(to_sleep); struct timespec sleep_time = absl::ToTimespec(to_sleep);
while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR) { while (nanosleep(&sleep_time, &sleep_time) != 0 && errno == EINTR) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment