cmake_minimum_required(VERSION 3.31) project(VUI LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib/${CMAKE_SYSTEM_NAME}/) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib/${CMAKE_SYSTEM_NAME}/) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/${CMAKE_SYSTEM_NAME}/) set(IS_DEBUG_BUILD CMAKE_BUILD_TYPE STREQUAL "Debug") # AVX :) if (MSVC) add_definitions(/MP /arch:AVX2 /W4) elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_definitions(-mavx2 -Wall -Wextra) endif () add_subdirectory(CMake) add_subdirectory(Source) get_property(source_files GLOBAL PROPERTY SRCS) get_property(module_source_files GLOBAL PROPERTY MODULE_SRCS) add_library(VUI STATIC ${source_files}) target_sources(VUI PUBLIC FILE_SET CXX_MODULES FILES ${module_source_files} ) set_property(TARGET VUI PROPERTY COMPILE_WARNING_AS_ERROR ON) target_compile_features(VUI PUBLIC cxx_std_23) add_executable(VUI_EX main.cppm) target_link_libraries(VUI_EX PRIVATE VUI) target_compile_features(VUI_EX PUBLIC cxx_std_23)