git clone 下载指定 tag 的代码 + 如何在使用 cmake 时候解决 opencv 多版本共存问题

使用 git clone --branch <tag_name> --single-branch <repository_url> 后,git tag 显示所有标签的原因是,尽管你只克隆了特定分支的内容,但默认情况下,Git 仍然会下载所有标签的引用。这些标签引用占用的空间很少,所以即使它们存在,也不会显著增加克隆操作的时间或占用的磁盘空间。

如果你只想看到特定标签,并且希望避免下载所有标签引用,可以采取以下步骤:

  1. 克隆仓库但不下载标签引用:

    git clone --no-tags --branch <tag_name> --single-branch <repository_url>
    
  2. 进入克隆的仓库目录:

    cd <repository_directory>
    

这样,Git 只会克隆你指定的标签及其对应的分支,而不会下载所有标签引用。

例如:

git clone --no-tags --branch 3.4.20 --single-branch https://github.com/opencv/opencv.git
cd opencv

这种方法会确保你仅下载指定标签的内容,并且在你运行 git tag 时不会显示其他标签。

下载一个 OpenCV 3.4.20.

git clone --no-tags --branch 3.4.20 --single-branch https://github.com/opencv/opencv.git
git clone --no-tags --branch 3.4.20 --single-branch https://github.com/opencv/opencv_contrib.git
cd opencv
mkdir build && cd build
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
make -j$(nproc)

注意:由于之前已经存在 opencv 3.2.0,所以这里下载的 OpenCV 3.4.20 并不会覆盖之前的 OpenCV 3.2.0。

我们没有执行:

sudo make install
sudo ldconfig

为了保证 CMakeLists.txt 中的 opencv 的路径正确,我们需要将 OpenCV 3.4.20 的路径加入到环境变量中。

export OpenCV_DIR=/workspace/opencv/build

现在我们就是使用的 OpenCV 3.4.20 了。

posted @ 2024-07-18 16:43  cold_moon  阅读(17)  评论(0编辑  收藏  举报