Skip to content

Commit 485254b

Browse files
committed
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]>
1 parent c09b630 commit 485254b

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()
@@ -178,7 +187,9 @@ endif()
178187

179188
find_program(MSGFMT_EXE msgfmt)
180189
if(NOT MSGFMT_EXE)
181-
set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe)
190+
if (USE_VCPKG)
191+
set(MSGFMT_EXE ${CMAKE_SOURCE_DIR}/compat/vcbuild/vcpkg/downloads/tools/msys2/msys64/usr/bin/msgfmt.exe)
192+
endif()
182193
if(NOT EXISTS ${MSGFMT_EXE})
183194
message(WARNING "Text Translations won't be built")
184195
unset(MSGFMT_EXE)
@@ -982,7 +993,7 @@ file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_GETTEXT='${NO_GETTEXT}'\n"
982993
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "RUNTIME_PREFIX='${RUNTIME_PREFIX}'\n")
983994
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "NO_PYTHON='${NO_PYTHON}'\n")
984995
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "SUPPORTS_SIMPLE_IPC='${SUPPORTS_SIMPLE_IPC}'\n")
985-
if(WIN32)
996+
if(USE_VCPKG)
986997
file(APPEND ${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
987998
endif()
988999

0 commit comments

Comments
 (0)