99 lines
3.4 KiB
CMake
99 lines
3.4 KiB
CMake
IF(WIN32)
|
|
|
|
if(MINGW)
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -std=c99 -g -fchar8_t")
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -std=c++2a -g -fchar8_t -Wall")
|
|
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -std=c99 -O2 -fchar8_t")
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++2a -O2 -fchar8_t")
|
|
|
|
add_definitions(-D_WIN32_WINNT=0x0601)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
|
|
find_package(tsl-robin-map CONFIG REQUIRED)
|
|
|
|
OPTION(MSVC_USE_DLL "use MSVC DLL" ON)
|
|
|
|
SET(MSVC_COMMON_FLAGS "/Zc:preprocessor /arch:AVX2 /fp:fast /fp:except-")
|
|
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /std:c17 ${MSVC_COMMON_FLAGS}")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c17 /std:c++20 ${MSVC_COMMON_FLAGS}")
|
|
|
|
OPTION(MSVC_USE_fsanitize "USE fsanitize" OFF)
|
|
|
|
OPTION(MSVC_USE_SecurityDevlopmentLiftCycle "use Security Development Lifecycle (SDL)" OFF)
|
|
|
|
if(MSVC_USE_SecurityDevlopmentLiftCycle)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /sdl")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /sdl")
|
|
endif()
|
|
|
|
if(MSVC_USE_fsanitize)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fsanitize=address")
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address")
|
|
endif()
|
|
|
|
if(MSVC_USE_DLL)
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd")
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
|
|
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD")
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
|
|
else()
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
|
|
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
|
|
endif()
|
|
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
add_compile_options(/wd4244) # ->int 精度丢失
|
|
add_compile_options(/wd4305) # ->float 精度丢失
|
|
add_compile_options(/wd4311) # template
|
|
add_compile_options(/wd4800) # ->bool 性能损失
|
|
add_compile_options(/wd4804) # unsafe compare
|
|
add_compile_options(/wd4805) # unsafe compare
|
|
add_compile_options(/wd4819) # ansi->unicode
|
|
add_compile_options(/wd4996) # sprintf/sscanf unsafe
|
|
endif()
|
|
|
|
ELSE()
|
|
IF(NOT ANDROID)
|
|
IF(APPLE)
|
|
SET(USE_CLANG ON)
|
|
ELSE()
|
|
OPTION(USE_CLANG OFF)
|
|
ENDIF()
|
|
|
|
if(USE_CLANG)
|
|
SET(CMAKE_C_COMPILER /usr/bin/clang)
|
|
SET(CMAKE_CXX_COMPILER /usr/bin/clang++)
|
|
endif()
|
|
ENDIF()
|
|
|
|
OPTION(USE_CHAR8_T OFF)
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
|
|
|
|
IF(USE_CHAR8_T)
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fchar8_t")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fchar8_t")
|
|
ENDIF()
|
|
|
|
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb3")
|
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb3")
|
|
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Ofast")
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast")
|
|
ENDIF()
|
|
|
|
MESSAGE("C Compiler: " ${CMAKE_C_COMPILER})
|
|
MESSAGE("C++ Compiler: " ${CMAKE_CXX_COMPILER})
|
|
MESSAGE("C Flag: " ${CMAKE_C_FLAGS})
|
|
MESSAGE("C++ Flag: " ${CMAKE_CXX_FLAGS})
|