From fdd97fa310f41812d1604c63c31e364bb4db4019 Mon Sep 17 00:00:00 2001 From: HunterZ <108939+HunterZ@users.noreply.github.com> Date: Sun, 10 Aug 2025 23:05:51 -0700 Subject: [PATCH 1/6] only add /EHa for MSVC, not WIN32 (fixes mingw support) --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e7e51c..c54b312 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,8 @@ if(NOT DEFINED CMAKE_CXX_STANDARD) if (WIN32) # Turn off Microsofts "security" warnings. add_compile_definitions(_CRT_SECURE_NO_WARNINGS NDEBUG _CONSOLE _SCL_SECURE_NO_WARNINGS NOGDICAPMASKS NOVIRTUALKEYCODES NOWINMESSAGES NOWINSTYLES NOSYSMETRICS NOMENUS NOICONS NOKEYSTATES NOSYSCOMMANDS NORASTEROPS NOSHOWWINDOW OEMRESOURCE NOATOM NOCLIPBOARD NOCOLOR NOCTLMGR NODRAWTEXT NOGDI NOKERNEL NOUSER NONLS NOMB NOMEMMGR NOMETAFILE NOMINMAX NOMSG NOOPENFILE NOSCROLL NOSOUND NOTEXTMETRIC NOWH NOWINOFFSETS NOCOMM NOKANJI NOHELP NOPROFILER NODEFERWINDOWPOS NOMCX) + endif + if (MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") add_compile_options("/EHa") else() From 642d2779b6f929de4f018d619a6411e18e54d3b5 Mon Sep 17 00:00:00 2001 From: HunterZ <108939+HunterZ@users.noreply.github.com> Date: Sun, 10 Aug 2025 23:08:31 -0700 Subject: [PATCH 2/6] fix typo (oops) --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c54b312..2247cc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,11 +10,11 @@ set(SUPPORTED_CXX_STANDARDS 14 17) if(NOT DEFINED CMAKE_CXX_STANDARD) message(STATUS "Setting C++ version to '14' as none was specified.") set(CMAKE_CXX_STANDARD 14) - if (WIN32) + if(WIN32) # Turn off Microsofts "security" warnings. add_compile_definitions(_CRT_SECURE_NO_WARNINGS NDEBUG _CONSOLE _SCL_SECURE_NO_WARNINGS NOGDICAPMASKS NOVIRTUALKEYCODES NOWINMESSAGES NOWINSTYLES NOSYSMETRICS NOMENUS NOICONS NOKEYSTATES NOSYSCOMMANDS NORASTEROPS NOSHOWWINDOW OEMRESOURCE NOATOM NOCLIPBOARD NOCOLOR NOCTLMGR NODRAWTEXT NOGDI NOKERNEL NOUSER NONLS NOMB NOMEMMGR NOMETAFILE NOMINMAX NOMSG NOOPENFILE NOSCROLL NOSOUND NOTEXTMETRIC NOWH NOWINOFFSETS NOCOMM NOKANJI NOHELP NOPROFILER NODEFERWINDOWPOS NOMCX) - endif - if (MSVC) + endif() + if(MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") add_compile_options("/EHa") else() From 7137c49604197768ddb268f576b67f8be2e4fa49 Mon Sep 17 00:00:00 2001 From: HunterZ <108939+HunterZ@users.noreply.github.com> Date: Sun, 10 Aug 2025 23:19:14 -0700 Subject: [PATCH 3/6] more fixes: - CMakeLists.txt: - define WIN32_LEAN_AND_MEAN (fixes mingw build) - ServMain.cpp, SrvCtrl.cpp: - include shellapi.h (fixes mingw build) --- CMakeLists.txt | 4 ++-- ServMain.cpp | 1 + SrvCtrl.cpp | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2247cc2..9033f3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,8 +11,8 @@ if(NOT DEFINED CMAKE_CXX_STANDARD) message(STATUS "Setting C++ version to '14' as none was specified.") set(CMAKE_CXX_STANDARD 14) if(WIN32) - # Turn off Microsofts "security" warnings. - add_compile_definitions(_CRT_SECURE_NO_WARNINGS NDEBUG _CONSOLE _SCL_SECURE_NO_WARNINGS NOGDICAPMASKS NOVIRTUALKEYCODES NOWINMESSAGES NOWINSTYLES NOSYSMETRICS NOMENUS NOICONS NOKEYSTATES NOSYSCOMMANDS NORASTEROPS NOSHOWWINDOW OEMRESOURCE NOATOM NOCLIPBOARD NOCOLOR NOCTLMGR NODRAWTEXT NOGDI NOKERNEL NOUSER NONLS NOMB NOMEMMGR NOMETAFILE NOMINMAX NOMSG NOOPENFILE NOSCROLL NOSOUND NOTEXTMETRIC NOWH NOWINOFFSETS NOCOMM NOKANJI NOHELP NOPROFILER NODEFERWINDOWPOS NOMCX) + # Turn off Microsofts "security" warnings. + add_compile_definitions(WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS NDEBUG _CONSOLE _SCL_SECURE_NO_WARNINGS NOGDICAPMASKS NOVIRTUALKEYCODES NOWINMESSAGES NOWINSTYLES NOSYSMETRICS NOMENUS NOICONS NOKEYSTATES NOSYSCOMMANDS NORASTEROPS NOSHOWWINDOW OEMRESOURCE NOATOM NOCLIPBOARD NOCOLOR NOCTLMGR NODRAWTEXT NOGDI NOKERNEL NOUSER NONLS NOMB NOMEMMGR NOMETAFILE NOMINMAX NOMSG NOOPENFILE NOSCROLL NOSOUND NOTEXTMETRIC NOWH NOWINOFFSETS NOCOMM NOKANJI NOHELP NOPROFILER NODEFERWINDOWPOS NOMCX) endif() if(MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") diff --git a/ServMain.cpp b/ServMain.cpp index 5bfaf92..1237ffc 100644 --- a/ServMain.cpp +++ b/ServMain.cpp @@ -23,6 +23,7 @@ #if defined(_WIN32) || defined(_WIN64) #include #include +#include #include #include "BaseSrv.h" #include "SrvCtrl.h" diff --git a/SrvCtrl.cpp b/SrvCtrl.cpp index f45fd0d..9c97242 100644 --- a/SrvCtrl.cpp +++ b/SrvCtrl.cpp @@ -13,6 +13,7 @@ #if defined(_WIN32) || defined(_WIN64) #include "SrvCtrl.h" +#include #include #include From f181965d7cc219c27eb90a555e8cd647aa11f311 Mon Sep 17 00:00:00 2001 From: HunterZ <108939+HunterZ@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:00:00 -0700 Subject: [PATCH 4/6] MSVC build fixes: - defer to preexisting CMAKE_MSVC_RUNTIME_LIBRARY value when defined - don't specify "/EHa" compile option --- CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9033f3d..aab16d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,8 +15,12 @@ if(NOT DEFINED CMAKE_CXX_STANDARD) add_compile_definitions(WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS NDEBUG _CONSOLE _SCL_SECURE_NO_WARNINGS NOGDICAPMASKS NOVIRTUALKEYCODES NOWINMESSAGES NOWINSTYLES NOSYSMETRICS NOMENUS NOICONS NOKEYSTATES NOSYSCOMMANDS NORASTEROPS NOSHOWWINDOW OEMRESOURCE NOATOM NOCLIPBOARD NOCOLOR NOCTLMGR NODRAWTEXT NOGDI NOKERNEL NOUSER NONLS NOMB NOMEMMGR NOMETAFILE NOMINMAX NOMSG NOOPENFILE NOSCROLL NOSOUND NOTEXTMETRIC NOWH NOWINOFFSETS NOCOMM NOKANJI NOHELP NOPROFILER NODEFERWINDOWPOS NOMCX) endif() if(MSVC) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") - add_compile_options("/EHa") + if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") + endif() + message(STATUS "CMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY}") + # Microsoft warns against using this, especially if linking with projects that don't: https://learn.microsoft.com/en-us/cpp/build/reference/eh-exception-handling-model?view=msvc-170 + # add_compile_options("/EHa") else() string(FIND "${CMAKE_CXX_FLAGS_DEBUG}" "-O0" nPos) if(${nPos} EQUAL "-1") From 7bd4c710aafb3fb7fedc18e43270e90209301e95 Mon Sep 17 00:00:00 2001 From: HunterZ <108939+HunterZ@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:02:29 -0700 Subject: [PATCH 5/6] add comment --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index aab16d2..7770d06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ if(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) if(WIN32) # Turn off Microsofts "security" warnings. + # also define WIN32_LEAN_AND_MEAN to fix MinGW building (and reduce size?) add_compile_definitions(WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS NDEBUG _CONSOLE _SCL_SECURE_NO_WARNINGS NOGDICAPMASKS NOVIRTUALKEYCODES NOWINMESSAGES NOWINSTYLES NOSYSMETRICS NOMENUS NOICONS NOKEYSTATES NOSYSCOMMANDS NORASTEROPS NOSHOWWINDOW OEMRESOURCE NOATOM NOCLIPBOARD NOCOLOR NOCTLMGR NODRAWTEXT NOGDI NOKERNEL NOUSER NONLS NOMB NOMEMMGR NOMETAFILE NOMINMAX NOMSG NOOPENFILE NOSCROLL NOSOUND NOTEXTMETRIC NOWH NOWINOFFSETS NOCOMM NOKANJI NOHELP NOPROFILER NODEFERWINDOWPOS NOMCX) endif() if(MSVC) From 96b134f396999d7d9057ff8160400df676b09002 Mon Sep 17 00:00:00 2001 From: HunterZ <108939+HunterZ@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:54:42 -0700 Subject: [PATCH 6/6] add include directory property to srvlib target for higher-level project visibility --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 432f4c0..53eaacf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,4 +65,6 @@ if(PROJECT_IS_TOP_LEVEL) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/example.service ${NEW_FILE_CONTENTS}) install(TARGETS srvlib DESTINATION lib) +else() + target_include_directories(srvlib PUBLIC ${CMAKE_CURRENT_LIST_DIR}) endif()