Skip to content

Commit 5b51f41

Browse files
Sahnvourandrewrk
authored andcommitted
stage1: override cmake's default compilation flags to statically link the CRT on windows
we want to use /MT instead of /MD for a fully static executable
1 parent 700bb19 commit 5b51f41

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,14 @@ if(NOT CMAKE_INSTALL_PREFIX)
1010
"Directory to install zig to" FORCE)
1111
endif()
1212

13+
set(CMAKE_USER_MAKE_RULES_OVERRIDE
14+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/c_flag_overrides.cmake)
15+
set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX
16+
${CMAKE_CURRENT_SOURCE_DIR}/cmake/cxx_flag_overrides.cmake)
17+
1318
project(zig C CXX)
1419
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
1520

16-
1721
set(ZIG_VERSION_MAJOR 0)
1822
set(ZIG_VERSION_MINOR 5)
1923
set(ZIG_VERSION_PATCH 0)

cmake/c_flag_overrides.cmake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
if(MSVC)
2+
set(CMAKE_C_FLAGS_DEBUG_INIT
3+
"/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1")
4+
5+
set(CMAKE_C_FLAGS_MINSIZEREL_INIT
6+
"/MT /O1 /Ob1 /D NDEBUG")
7+
8+
set(CMAKE_C_FLAGS_RELEASE_INIT
9+
"/MT /O2 /Ob2 /D NDEBUG")
10+
11+
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT
12+
"/MT /Zi /O2 /Ob1 /D NDEBUG")
13+
endif()

cmake/cxx_flag_overrides.cmake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
if(MSVC)
2+
set(CMAKE_CXX_FLAGS_DEBUG_INIT
3+
"/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1")
4+
5+
set(CMAKE_CXX_FLAGS_MINSIZEREL_INIT
6+
"/MT /O1 /Ob1 /D NDEBUG")
7+
8+
set(CMAKE_CXX_FLAGS_RELEASE_INIT
9+
"/MT /O2 /Ob2 /D NDEBUG")
10+
11+
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT
12+
"/MT /Zi /O2 /Ob1 /D NDEBUG")
13+
endif()

0 commit comments

Comments
 (0)