cmake_minimum_required(VERSION 3.15) project(WinGUI C) set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) file(GLOB SOURCES ${SOURCE_DIR}/*.c) list(FILTER SOURCES EXCLUDE REGEX \\.t\\.c) foreach (item IN LISTS SOURCES) message(STATUS "[${PROJECT_NAME}] SOURCE: ${item}") endforeach () add_library(${PROJECT_NAME} "") target_sources(${PROJECT_NAME} PUBLIC ${SOURCES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) file(GLOB TEST_SOURCES ${SOURCE_DIR}/*.t.c) foreach (item IN LISTS TEST_SOURCES) get_filename_component(TestUnit ${item} NAME_WLE) message(STATUS "[${PROJECT_NAME}] TEST UNIT: ${TestUnit} - ${item}") add_executable(${TestUnit} ${item}) target_link_libraries(${TestUnit} PRIVATE ${PROJECT_NAME}) endforeach () file(GLOB GUI_TEST_SOURCES ${SOURCE_DIR}/GUITest/*.t.c) foreach (item IN LISTS GUI_TEST_SOURCES) get_filename_component(TestUnit ${item} NAME_WLE) message(STATUS "[${PROJECT_NAME}] TEST UNIT: ${TestUnit} - ${item}") add_executable(${TestUnit} WIN32 ${item}) target_include_directories(${TestUnit} PUBLIC ${SOURCE_DIR}/GUITest) target_link_libraries(${TestUnit} PRIVATE ${PROJECT_NAME}) endforeach () target_sources(Resource.t PRIVATE GUITest/Resource.rc) target_sources(Snake.t PRIVATE GUITest/Snake.rc) target_sources(SimpFont.t PRIVATE GUITest/SimpFont.rc)