@@ -14,6 +14,11 @@ Note: Visual Studio also has the option of opening `CMakeLists.txt`
14
14
directly; Using this option, Visual Studio will not find the source code,
15
15
though, therefore the `File>Open>Folder...` option is preferred.
16
16
17
+ Visual Studio does not produce a .sln solution file nor the .vcxproj files
18
+ that may be required by VS extension tools.
19
+
20
+ To generate the .sln/.vcxproj files run CMake manually, as described below.
21
+
17
22
Instructions to run CMake manually:
18
23
19
24
mkdir -p contrib/buildsystems/out
@@ -22,7 +27,7 @@ Instructions to run CMake manually:
22
27
23
28
This will build the git binaries in contrib/buildsystems/out
24
29
directory (our top-level .gitignore file knows to ignore contents of
25
- this directory).
30
+ this directory). The project .sln and .vcxproj files are also generated.
26
31
27
32
Possible build configurations(-DCMAKE_BUILD_TYPE) with corresponding
28
33
compiler flags
@@ -35,17 +40,16 @@ empty(default) :
35
40
NOTE: -DCMAKE_BUILD_TYPE is optional. For multi-config generators like Visual Studio
36
41
this option is ignored
37
42
38
- This process generates a Makefile(Linux/*BSD/MacOS) , Visual Studio solution(Windows) by default.
43
+ This process generates a Makefile(Linux/*BSD/MacOS), Visual Studio solution(Windows) by default.
39
44
Run `make` to build Git on Linux/*BSD/MacOS.
40
45
Open git.sln on Windows and build Git.
41
46
42
- NOTE: By default CMake uses Makefile as the build tool on Linux and Visual Studio in Windows,
43
- to use another tool say `ninja` add this to the command line when configuring.
44
- `-G Ninja`
45
-
46
47
NOTE: By default CMake will install vcpkg locally to your source tree on configuration,
47
48
to avoid this, add `-DNO_VCPKG=TRUE` to the command line when configuring.
48
49
50
+ The Visual Studio default generator changed in v16.6 from its Visual Studio
51
+ implemenation to `Ninja` This required changes to many CMake scripts.
52
+
49
53
]]
50
54
cmake_minimum_required (VERSION 3.14)
51
55
@@ -59,14 +63,28 @@ endif()
59
63
60
64
if (NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS)
61
65
set (CMAKE_EXPORT_COMPILE_COMMANDS TRUE )
66
+ message ("settting CMAKE_EXPORT_COMPILE_COMMANDS: ${CMAKE_EXPORT_COMPILE_COMMANDS} " )
62
67
endif ()
63
68
64
69
if (USE_VCPKG)
65
70
set (VCPKG_DIR "${CMAKE_SOURCE_DIR} /compat/vcbuild/vcpkg" )
71
+ message ("WIN32: ${WIN32} " ) # show its underlying text values
72
+ message ("VCPKG_DIR: ${VCPKG_DIR} " )
73
+ message ("VCPKG_ARCH: ${VCPKG_ARCH} " ) # maybe unset
74
+ message ("MSVC: ${MSVC} " )
75
+ message ("CMAKE_GENERATOR: ${CMAKE_GENERATOR} " )
76
+ message ("CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID} " )
77
+ message ("CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM} " )
78
+ message ("CMAKE_EXPORT_COMPILE_COMMANDS: ${CMAKE_EXPORT_COMPILE_COMMANDS} " )
79
+ message ("ENV(CMAKE_EXPORT_COMPILE_COMMANDS): $ENV{CMAKE_EXPORT_COMPILE_COMMANDS} " )
66
80
if (NOT EXISTS ${VCPKG_DIR} )
67
81
message ("Initializing vcpkg and building the Git's dependencies (this will take a while...)" )
68
82
execute_process (COMMAND ${CMAKE_SOURCE_DIR} /compat/vcbuild/vcpkg_install.bat ${VCPKG_ARCH} )
69
83
endif ()
84
+ if (NOT EXISTS ${VCPKG_ARCH} )
85
+ message ("VCPKG_ARCH: unset, using 'x64-windows'" )
86
+ set (VCPKG_ARCH "x64-windows" ) # default from vcpkg_install.bat
87
+ endif ()
70
88
list (APPEND CMAKE_PREFIX_PATH "${VCPKG_DIR} /installed/${VCPKG_ARCH} " )
71
89
72
90
# In the vcpkg edition, we need this to be able to link to libcurl
0 commit comments