55 lines
1.6 KiB
CMake
55 lines
1.6 KiB
CMake
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)
|