cmake_minimum_required(VERSION 3.20) project("simple-c") find_package(BISON REQUIRED) find_package(FLEX REQUIRED) if (WIN32) set (ADDITIONAL_FLEX_FLAGS "--wincompat") else() set (ADDITIONAL_FLEX_FLAGS "") endif() flex_target(lexer lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.c DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/lexer.h COMPILE_FLAGS ${ADDITIONAL_FLEX_FLAGS} ) bison_target(parser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.c COMPILE_FLAGS "-d -v" ) add_flex_bison_dependency(lexer parser) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) set(source_files ${CMAKE_CURRENT_BINARY_DIR}/parser.c ${CMAKE_CURRENT_BINARY_DIR}/lexer.c ) add_executable(${PROJECT_NAME} ${source_files} ${BISON_PARSER_OUTPUTS} ${FLEX_LEXER_OUTPUTS})