cmake_minimum_required(VERSION 3.20) project(ChangeBootloaderCpp LANGUAGES CXX) enable_language(RC) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) add_executable(ChangeBootLoader WIN32 src/main.cpp src/boot.cpp src/util.cpp src/app.rc ) set_property(TARGET ChangeBootLoader PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") target_compile_definitions(ChangeBootLoader PRIVATE UNICODE _UNICODE WIN32_LEAN_AND_MEAN NOMINMAX ) target_compile_options(ChangeBootLoader PRIVATE /utf-8 /W4 /permissive- ) target_link_libraries(ChangeBootLoader PRIVATE user32 gdi32 ) # The manifest is embedded through app.rc; do not let the linker add a second one. target_link_options(ChangeBootLoader PRIVATE /MANIFEST:NO) set_target_properties(ChangeBootLoader PROPERTIES OUTPUT_NAME "Change_BootLoader" )