46 lines
1.5 KiB
CMake
46 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.19)
|
||
|
||
# cmake_policy(SET CMP0135 OLD)
|
||
|
||
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||
|
||
project(sysy
|
||
VERSION 0.0.0.1
|
||
DESCRIPTION "The SysY language compiler"
|
||
LANGUAGES CXX
|
||
)
|
||
|
||
set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to")
|
||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||
|
||
# ========== 修改点 1:强制 Debug 模式(调试时使用) ==========
|
||
if(NOT CMAKE_BUILD_TYPE)
|
||
message(STATUS "Build type not set, defaulting to Debug mode for GDB support.")
|
||
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
|
||
"Choose the type of build, options are: Debug Release RelWithDebInfo." FORCE)
|
||
endif()
|
||
|
||
# ========== 修改点 2:确保 Debug 模式生成调试信息 ==========
|
||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||
message(STATUS "Debug mode enabled: Adding -g flag for GDB debugging.")
|
||
add_compile_options(-g -O0) # -O0 禁用优化,避免干扰调试
|
||
endif()
|
||
|
||
# Set output directories
|
||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||
|
||
# ANTLR
|
||
set(ANTLR_EXECUTABLE "${PROJECT_SOURCE_DIR}/antlr/antlr-4.13.2-complete.jar")
|
||
set(ANTLR_RUNTIME "${PROJECT_SOURCE_DIR}/antlr/antlr4-runtime-4.13.2")
|
||
|
||
set(ANTLR4_INSTALL ON)
|
||
set(WITH_DEMO OFF)
|
||
set(ANTLR_BUILD_CPP_TESTS OFF)
|
||
add_subdirectory(${ANTLR_RUNTIME})
|
||
|
||
# Project source files
|
||
add_subdirectory(src) |