cmake_minimum_required(VERSION 3.12) # 设置项目名字为 MXCompiler project(MXCompiler) # 设置编译标准为 C++20 set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # 设置如果没有指定,默认编译模式为 release if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() # 设置 Debug 模式下开启全部编译警告和 sanitizer if(CMAKE_BUILD_TYPE STREQUAL "Debug") if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") add_compile_options(-Wall -Wextra -Wpedantic -fsanitize=address,undefined) add_link_options(-fsanitize=address,undefined) elseif(MSVC) add_compile_options(/W4 /WX) endif() endif() # 设置 Release 模式下开启优化 # if(CMAKE_BUILD_TYPE STREQUAL "Release") # if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") # add_compile_options(-Wall -Wextra -Wpedantic -fsanitize=address,undefined -O2) # add_link_options(-fsanitize=address,undefined) # elseif(MSVC) # add_compile_options(/O2) # endif() # endif() include(FetchContent) # FetchContent_Declare( # googletest # URL_HASH SHA256=1f357c27ca988c3f7c6b4bf68a9395005ac6761f034046e9dde0896e3aba00e4 # URL ${CMAKE_SOURCE_DIR}/deps/googletest-v1.14.0-mirror.zip # ) # FetchContent_MakeAvailable(googletest) # include(GoogleTest) FetchContent_Declare( argparse URL_HASH SHA256=cd07c1208c01bef28c5173f4bad0b2df73dd7316d2f56fc80344952c400fa711 URL ${CMAKE_SOURCE_DIR}/deps/argparse-9550b0a-mirror.zip ) FetchContent_MakeAvailable(argparse) include_directories(${CMAKE_SOURCE_DIR}/include) add_subdirectory(src)