33 lines
1.2 KiB
CMake
33 lines
1.2 KiB
CMake
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()
|