cmake_minimum_required(VERSION 3.21) project(Elna) set(CMAKE_EXPORT_COMPILE_COMMANDS 1) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_STANDARD 14) find_package(Boost CONFIG COMPONENTS process program_options REQUIRED) find_package(FLEX REQUIRED) find_package(BISON REQUIRED) FLEX_TARGET(lexer source/lexer.ll ${CMAKE_CURRENT_BINARY_DIR}/lexer.cc) BISON_TARGET(parser source/parser.yy ${CMAKE_CURRENT_BINARY_DIR}/parser.cc) add_flex_bison_dependency(lexer parser) add_library(elna-frontend source/ast.cc include/elna/source/ast.h source/types.cc include/elna/source/types.h source/driver.cc include/elna/source/driver.h source/result.cc include/elna/source/result.h ${BISON_parser_OUTPUTS} ${FLEX_lexer_OUTPUTS} ) target_include_directories(elna-frontend PRIVATE ${CMAKE_CURRENT_BINARY_DIR} include) target_compile_options(elna-frontend PRIVATE $<$:-fno-exceptions -fno-rtti> ) add_executable(elna cli/main.cc) target_link_libraries(elna PRIVATE elna-frontend) target_include_directories(elna PRIVATE ${CMAKE_CURRENT_BINARY_DIR} include ${Boost_INCLUDE_DIR}) target_link_libraries(elna LINK_PUBLIC ${Boost_LIBRARIES}) target_compile_options(elna PRIVATE $<$:-fno-exceptions -fno-rtti> )