Skip to content

Commit cd0a852

Browse files
ROGERSM94gitster
authored andcommitted
cmake: add knob to disable vcpkg
When building on windows users have the option to use vcpkg to provide the dependencies needed to compile. Previously, this was used only when using the Visual Studio generator which was not ideal because: - Not all users who want to use vcpkg use the Visual Studio generators. - Some versions of Visual Studio 2019 moved away from using the VS 2019 generator by default, making it impossible for Visual Studio to configure the project in the likely event that it couldn't find the dependencies. - Inexperienced users of CMake are very likely to get tripped up by the errors caused by a lack of vcpkg, making the above bullet point both annoying and hard to debug. As such, let's make using vcpkg the default on windows. Users who want to avoid using vcpkg can disable it by passing -DNO_VCPKG=TRUE. Signed-off-by: Matthew Rogers <[email protected]> Acked-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 48bf2fa commit cd0a852

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

contrib/buildsystems/CMakeLists.txt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,23 @@ NOTE: By default CMake uses Makefile as the build tool on Linux and Visual Studi
4343
to use another tool say `ninja` add this to the command line when configuring.
4444
`-G Ninja`
4545
46+
NOTE: By default CMake will install vcpkg locally to your source tree on configuration,
47+
to avoid this, add `-DNO_VCPKG=TRUE` to the command line when configuring.
48+
4649
]]
4750
cmake_minimum_required(VERSION 3.14)
4851

4952
#set the source directory to root of git
5053
set(CMAKE_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
51-
if(WIN32)
54+
55+
option(USE_VCPKG "Whether or not to use vcpkg for obtaining dependencies. Only applicable to Windows platforms" ON)
56+
if(NOT WIN32)
57+
set(USE_VCPKG OFF CACHE BOOL FORCE)
58+
endif()
59+
60+
if(USE_VCPKG)
5261
set(VCPKG_DIR "${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg")
53-
if(MSVC AND NOT EXISTS ${VCPKG_DIR})
62+
if(NOT EXISTS ${VCPKG_DIR})
5463
message("Initializing vcpkg and building the Git's dependencies (this will take a while...)")
5564
execute_process(COMMAND ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg_install.bat)
5665
endif()
@@ -174,7 +183,9 @@ endif()
174183

175184
find_program(MSGFMT_EXE msgfmt)
176185
if(NOT MSGFMT_EXE)
177-
set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe)
186+
if (USE_VCPKG)
187+
set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe)
188+
endif()
178189
if(NOT EXISTS ${MSGFMT_EXE})
179190
message(WARNING "Text Translations won't be built")
180191
unset(MSGFMT_EXE)
@@ -956,7 +967,7 @@ file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "X='${EXE_EXTENSION}'\n")
956967
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_GETTEXT='${NO_GETTEXT}'\n")
957968
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "RUNTIME_PREFIX='${RUNTIME_PREFIX}'\n")
958969
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PYTHON='${NO_PYTHON}'\n")
959-
if(WIN32)
970+
if(USE_VCPKG)
960971
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
961972
endif()
962973

0 commit comments

Comments
 (0)