Skip to content

Commit ab641e8

Browse files
committed
Add CMake option to link C runtime statically
1 parent 643e17b commit ab641e8

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

CMakeLists.txt

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
cmake_minimum_required(VERSION 2.4.4...3.15.0)
22
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
33

4+
if(POLICY CMP0091)
5+
cmake_policy(SET CMP0091 NEW)
6+
endif()
7+
48
project(zlib C)
59

610
set(VERSION "1.3.0.1")
711

12+
option(ZLIB_STATIC_LINK_CRT "Link the MSVC runtime library statically" OFF)
13+
814
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
915
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
1016
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
@@ -76,12 +82,24 @@ if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
7682
endif()
7783

7884
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
79-
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
80-
${ZLIB_PC} @ONLY)
81-
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
82-
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
85+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
86+
${ZLIB_PC} @ONLY)
87+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
88+
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
8389
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
8490

91+
if(POLICY CMP0091)
92+
# CMake >= 3.15 has CMAKE_MSVC_RUNTIME_LIBRARY to set the MSVCC runtime library
93+
if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio .*|NMake .*")
94+
if(ZLIB_STATIC_LINK_CRT)
95+
message(STATUS "Configuring to link the MSVC runtime library statically")
96+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
97+
else()
98+
message(STATUS "Configuring to link the MSVC runtime library dynamically")
99+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
100+
endif()
101+
endif()
102+
endif()
85103

86104
#============================================================================
87105
# zlib

0 commit comments

Comments
 (0)