From 50d2d3ef5541bf3c3a143e58fc0207de8d290d92 Mon Sep 17 00:00:00 2001 From: gendalph Date: Tue, 12 Sep 2017 22:10:59 +0300 Subject: [PATCH] CMake build fixes for Visual Studio Remove unsupported cmd line options (gcc). Disable warning for DLL. --- runtime/Cpp/CMakeLists.txt | 10 ++++++++-- runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake | 2 ++ runtime/Cpp/demo/CMakeLists.txt | 8 +++++++- runtime/Cpp/runtime/CMakeLists.txt | 10 +++++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/runtime/Cpp/CMakeLists.txt b/runtime/Cpp/CMakeLists.txt index 65e704516..cfc8a7693 100644 --- a/runtime/Cpp/CMakeLists.txt +++ b/runtime/Cpp/CMakeLists.txt @@ -25,7 +25,8 @@ project(LIBANTLR4) if(CMAKE_VERSION VERSION_EQUAL "3.0.0" OR CMAKE_VERSION VERSION_GREATER "3.0.0") - CMAKE_POLICY(SET CMP0026 OLD) + CMAKE_POLICY(SET CMP0026 NEW) + CMAKE_POLICY(SET CMP0054 OLD) CMAKE_POLICY(SET CMP0045 OLD) CMAKE_POLICY(SET CMP0042 OLD) endif() @@ -61,7 +62,9 @@ if (WITH_DEMO) endif() endif(WITH_DEMO) -set(MY_CXX_WARNING_FLAGS " -Wall -pedantic -W") +if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(MY_CXX_WARNING_FLAGS " -Wall -pedantic -W") +endif () # Initialize CXXFLAGS. if("${CMAKE_VERSION}" VERSION_GREATER 3.1.0) @@ -75,11 +78,13 @@ else() set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -std=c++11") endif() +if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${MY_CXX_WARNING_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS}") set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG ${MY_CXX_WARNING_FLAGS}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ${MY_CXX_WARNING_FLGAS}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g ${MY_CXX_WARNING_FLAGS}") +endif () # Compiler-specific C++11 activation. if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") @@ -101,6 +106,7 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_SYSTEM_NAME MATCHES if (WITH_LIBCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") endif() +elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") else () message(FATAL_ERROR "Your C++ compiler does not support C++11.") endif () diff --git a/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake b/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake index e1c28821a..a77c09307 100644 --- a/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake +++ b/runtime/Cpp/cmake/ExternalAntlr4Cpp.cmake @@ -206,11 +206,13 @@ macro(antlr4cpp_process_grammar # export generated cpp files into list foreach(generated_file ${generated_files}) list(APPEND antlr4cpp_src_files_${antlr4cpp_project_namespace} ${generated_file}) + if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") set_source_files_properties( ${generated_file} PROPERTIES COMPILE_FLAGS -Wno-overloaded-virtual ) + endif () endforeach(generated_file) message(STATUS "Antlr4Cpp ${antlr4cpp_project_namespace} Generated: ${generated_files}") diff --git a/runtime/Cpp/demo/CMakeLists.txt b/runtime/Cpp/demo/CMakeLists.txt index a91c40ddc..53e45fe40 100644 --- a/runtime/Cpp/demo/CMakeLists.txt +++ b/runtime/Cpp/demo/CMakeLists.txt @@ -45,11 +45,17 @@ set(antlr4-demo_SRC ${antlr4-demo-GENERATED_SRC} ) +if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set (flags_1 "-Wno-overloaded-virtual") +else() + set (flags_1 "-MP /wd4251") +endif() + foreach( src_file ${antlr4-demo_SRC} ) set_source_files_properties( ${src_file} PROPERTIES - COMPILE_FLAGS -Wno-overloaded-virtual + COMPILE_FLAGS "${COMPILE_FLAGS} ${flags_1}" ) endforeach( src_file ${antlr4-demo_SRC} ) diff --git a/runtime/Cpp/runtime/CMakeLists.txt b/runtime/Cpp/runtime/CMakeLists.txt index b2a4fbd02..c51d7f310 100644 --- a/runtime/Cpp/runtime/CMakeLists.txt +++ b/runtime/Cpp/runtime/CMakeLists.txt @@ -44,7 +44,10 @@ elseif(APPLE) target_link_libraries(antlr4_static ${COREFOUNDATION_LIBRARY}) endif() -set(disabled_compile_warnings "-Wno-overloaded-virtual") +if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(disabled_compile_warnings "-Wno-overloaded-virtual") +endif () + if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") set(disabled_compile_warnings "${disabled_compile_warnings} -Wno-dollar-in-identifier-extension -Wno-four-char-constants") elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") @@ -58,6 +61,11 @@ if (WIN32) set(extra_static_compile_flags "-DANTLR4CPP_STATIC") endif(WIN32) +if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(extra_share_compile_flags "-DANTLR4CPP_EXPORTS -MP /wd4251") + set(extra_static_compile_flags "-DANTLR4CPP_STATIC -MP") +endif() + set_target_properties(antlr4_shared PROPERTIES VERSION ${ANTLR_VERSION} SOVERSION ${ANTLR_VERSION}