Skip to content

Commit b8fd547

Browse files
authored
Merge pull request #1974 from matthauck/cmake-windows
Add MSVC support to c++ cmake build
2 parents db5a0ae + a2fcad6 commit b8fd547

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

runtime/Cpp/CMakeLists.txt

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ if (WITH_DEMO)
6262
endif()
6363
endif(WITH_DEMO)
6464

65-
set(MY_CXX_WARNING_FLAGS " -Wall -pedantic -W")
65+
if (MSVC_VERSION)
66+
set(MY_CXX_WARNING_FLAGS " /W4")
67+
else()
68+
set(MY_CXX_WARNING_FLAGS " -Wall -pedantic -W")
69+
endif()
6670

6771
# Initialize CXXFLAGS.
6872
if("${CMAKE_VERSION}" VERSION_GREATER 3.1.0)
@@ -76,11 +80,18 @@ else()
7680
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -std=c++11")
7781
endif()
7882

79-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${MY_CXX_WARNING_FLAGS}")
80-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS}")
81-
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG ${MY_CXX_WARNING_FLAGS}")
82-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ${MY_CXX_WARNING_FLGAS}")
83-
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g ${MY_CXX_WARNING_FLAGS}")
83+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_WARNING_FLAGS}")
84+
if (MSVC_VERSION)
85+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MP ${MY_CXX_WARNING_FLAGS}")
86+
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /O1 /Oi /Ob2 /Gy /MP /DNDEBUG ${MY_CXX_WARNING_FLAGS}")
87+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /Oi /Ob2 /Gy /MP /DNDEBUG ${MY_CXX_WARNING_FLGAS}")
88+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /O2 /Oi /Ob2 /Gy /MP /Zi ${MY_CXX_WARNING_FLAGS}")
89+
else()
90+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS}")
91+
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG ${MY_CXX_WARNING_FLAGS}")
92+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ${MY_CXX_WARNING_FLGAS}")
93+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g ${MY_CXX_WARNING_FLAGS}")
94+
endif()
8495

8596
# Compiler-specific C++11 activation.
8697
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
@@ -102,6 +113,8 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_SYSTEM_NAME MATCHES
102113
if (WITH_LIBCXX)
103114
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
104115
endif()
116+
elseif ( MSVC_VERSION GREATER 1800 OR MSVC_VERSION EQUAL 1800 )
117+
# Visual Studio 2012+ supports c++11 features
105118
else ()
106119
message(FATAL_ERROR "Your C++ compiler does not support C++11.")
107120
endif ()

runtime/Cpp/runtime/CMakeLists.txt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ elseif(APPLE)
4444
target_link_libraries(antlr4_static ${COREFOUNDATION_LIBRARY})
4545
endif()
4646

47-
set(disabled_compile_warnings "-Wno-overloaded-virtual")
47+
if (MSVC_VERSION)
48+
set(disabled_compile_warnings "/wd4251")
49+
else()
50+
set(disabled_compile_warnings "-Wno-overloaded-virtual")
51+
endif()
4852
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
4953
set(disabled_compile_warnings "${disabled_compile_warnings} -Wno-dollar-in-identifier-extension -Wno-four-char-constants")
5054
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
@@ -57,6 +61,15 @@ if (WIN32)
5761
set(extra_share_compile_flags "-DANTLR4CPP_EXPORTS")
5862
set(extra_static_compile_flags "-DANTLR4CPP_STATIC")
5963
endif(WIN32)
64+
if (MSVC_VERSION)
65+
target_compile_options(antlr4_shared PRIVATE "/MD$<$<CONFIG:Debug>:d>")
66+
target_compile_options(antlr4_static PRIVATE "/MT$<$<CONFIG:Debug>:d>")
67+
endif()
68+
69+
set(static_lib_suffix "")
70+
if (MSVC_VERSION)
71+
set(static_lib_suffix "-static")
72+
endif()
6073

6174
set_target_properties(antlr4_shared
6275
PROPERTIES VERSION ${ANTLR_VERSION}
@@ -72,7 +85,7 @@ set_target_properties(antlr4_shared
7285
set_target_properties(antlr4_static
7386
PROPERTIES VERSION ${ANTLR_VERSION}
7487
SOVERSION ${ANTLR_VERSION}
75-
OUTPUT_NAME antlr4-runtime
88+
OUTPUT_NAME "antlr4-runtime${static_lib_suffix}"
7689
ARCHIVE_OUTPUT_DIRECTORY ${LIB_OUTPUT_DIR}
7790
COMPILE_FLAGS "${disabled_compile_warnings} ${extra_static_compile_flags}")
7891

0 commit comments

Comments
 (0)