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()