ExternalProject: could not find git
I have both a standalone git installed and a git bundled with Visual Studio 2019. While making a cmake configuration step I get an error:
CMake Error at D:/cmake-3.20.5-win64-x64/share/cmake-3.20/Modules/ExternalProject.cmake:2633 (message):
error: could not find git for clone of modular_boostorg-populate
Call Stack (most recent call first):
D:/cmake-3.20.5-win64-x64/share/cmake-3.20/Modules/ExternalProject.cmake:3683 (_ep_add_download_command)
CMakeLists.txt:22 (ExternalProject_Add)
I've search the Internet and found out that git bundled with Visual Studio is not a fully-functional one, I've installed a fully-functional git for Visual Studio using Visual Studio installer as it was told in this forum: https://developercommunity.visualstudio.com/t/bundled-git-installation-not-usable-with-cmake-ope/1144595
This did not resolve the issue. Then I've updated a standalone git installation and made sure that it goes prior to a git from Visual Studio in a PATH:
PATH
E:\sources\proto\build_tools\env\Scripts
"d:\cmake-3.20.5-win64-x64"\bin\
"d:\ninja"\
"d:\Program Files\Git"\bin\
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\\Extensions\Microsoft\IntelliCode\CLI
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCPackages
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\bin\Roslyn
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools\x64
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools
D:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\\x64
D:\Program Files (x86)\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\devinit
D:\Windows Kits\10\bin\10.0.19041.0\x64
D:\Windows Kits\10\bin\x64
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\\MSBuild\Current\Bin
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\
C:\Windows\system32
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja
It did not resolve the issue, I still get the same error. Looks like cmake does not respect PATH while search for a installation of a git. Meanwhile git clone
command works fine from this environment:
(env) e:\builds\proto\ninja\tmp>git clone https://github.com/boostorg/boost.git
Cloning into 'boost'...
Here is my root CMakeLists.txt:
cmake_minimum_required(VERSION 3.16)
project("proto")
set(CMAKE_CXX_STANDARD 11)
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
set(BOOST_ENABLE_CMAKE ON)
FetchContent_Declare(modular_boostorg
GIT_REPOSITORY https://github.com/boostorg/boost.git
GIT_TAG boost-1.78.0
GIT_SUBMODULES
libs/algorithm
libs/align
libs/array
libs/asio
libs/assert
libs/atomic
libs/bind
libs/chrono
libs/concept_check
libs/config
libs/container
libs/container_hash
libs/context
libs/conversion
libs/container
libs/core
libs/coroutine
libs/date_time
libs/detail
libs/exception
libs/filesystem
libs/function
libs/function_types
libs/fusion
libs/json
libs/integer
libs/intrusive
libs/io
libs/iterator
libs/lexical_cast
libs/move
libs/mpl
libs/mp11
libs/numeric/conversion
libs/optional
libs/pool
libs/predef
libs/preprocessor
libs/process
libs/range
libs/ratio
libs/rational
libs/regex
libs/smart_ptr
libs/static_assert
libs/system
libs/throw_exception
libs/tokenizer
libs/tuple
libs/type_index
libs/type_traits
libs/typeof
libs/unordered
libs/utility
libs/variant2
libs/winapi
tools/cmake
)
FetchContent_GetProperties(modular_boostorg)
if(NOT modular_boostorg_POPULATED)
FetchContent_Populate(modular_boostorg)
#set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}:${modular_boostorg_SOURCE_DIR}/tools/cmake/include")
add_subdirectory(
${modular_boostorg_SOURCE_DIR}
${modular_boostorg_BINARY_DIR}
EXCLUDE_FROM_ALL
)
endif()
enable_testing()
add_subdirectory("some-my-directory 1")
...
add_subdirectory("some-my-directory N")
OS: Windows 10 Pro
CMake version: 3.20.5