cmake_minimum_required(VERSION 3.15)
project(CloseWindowsService C)

file(GLOB SOURCES *.c)
list(FILTER SOURCES EXCLUDE REGEX \\.t\\.c)
list(FILTER SOURCES EXCLUDE REGEX main.c)

foreach (item IN LISTS SOURCES)
    message(STATUS "[${PROJECT_NAME}] SOURCE: ${item}")
endforeach ()

if(MSVC)
    add_compile_options(/utf-8)
endif()

if(MINGW)
    # 检查项目根目录下是否存在 UAC.manifest 文件
    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/UAC.manifest")
        # 自动在 build 目录下生成一个临时的资源文件资源文件
        file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/uac_resource.rc" "1 24 \"${CMAKE_CURRENT_SOURCE_DIR}/UAC.manifest\"")
        # 将生成的 .rc 文件作为一个源文件加入列表中
        set(UAC_RESOURCE_SRC "${CMAKE_CURRENT_BINARY_DIR}/uac_resource.rc")
    else()
        message(FATAL_ERROR "未找到 UAC.manifest 文件，请确保它存在于项目根目录下！")
    endif()
endif()

add_executable(${PROJECT_NAME} main.c ${SOURCES})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR} )

if(MSVC)
    target_link_options(${PROJECT_NAME} PRIVATE "/MANIFESTUAC:level='requireAdministrator' uiAccess='false'")
endif()