MSVC fixes
This commit is contained in:
parent
79610733f4
commit
79ae60ed97
4 changed files with 16 additions and 7 deletions
|
@ -43,6 +43,11 @@
|
|||
|
||||
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(cctz)
|
||||
add_subdirectory(abseil-cpp)
|
||||
|
@ -51,7 +56,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
|
||||
|
||||
|
|
|
@ -26,7 +26,12 @@ include(AbseilHelpers)
|
|||
|
||||
|
||||
# config options
|
||||
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)
|
|||
# -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
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue