我使用CMake的FetchContent_Declare和FetchContent_Populate从Git仓库下载依赖项。
FetchContent_Declare(my_subproject
GIT_REPOSITORY http://127.0.0.1/my_subproject.git
GIT_TAG master
)
FetchContent_GetProperties(my_subproject)
if(NOT my_subproject_POPULATED)
FetchContent_Populate( my_subproject )
endif()
target_link_libraries ( ${EXE_TARGET} my_subproject )
下载/克隆看起来很好,但 my_subproject 处于分离头状态:它指向“源/主”而不是指向本地“主”分支。
关于如何使“FetchContent_Populate”指向本地“master”分支,有什么提示吗?
我使用的是CMake 3.21.1。这个“问题”不会发生在CMake 3.17.2上。
1条答案
按热度按时间sdnqo3pr1#
我只找到了这个替代方案:
如果您在
FetchContent_Populate()
或FetchContent_MakeAvailable()
之后立即执行此操作,您将不会处于detached HEAD
。但是请记住CMake不推荐使用Fetching a分支,你应该从git标签或者提交SHA1中获取。
如果有人有更好的解决办法,我很感兴趣。