git clone 下载指定 tag 的代码 + 如何在使用 cmake 时候解决 opencv 多版本共存问题
使用 git clone --branch <tag_name> --single-branch <repository_url>
后,git tag
显示所有标签的原因是,尽管你只克隆了特定分支的内容,但默认情况下,Git 仍然会下载所有标签的引用。这些标签引用占用的空间很少,所以即使它们存在,也不会显著增加克隆操作的时间或占用的磁盘空间。
如果你只想看到特定标签,并且希望避免下载所有标签引用,可以采取以下步骤:
-
克隆仓库但不下载标签引用:
git clone --no-tags --branch <tag_name> --single-branch <repository_url>
-
进入克隆的仓库目录:
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 了。