說明
本文記錄自己使用vcpkg.json文件自動安裝依賴庫并完成編譯的全過程。
關于vcpkg是什么這里就不多詳細解釋,可以看一下專門的介紹及安裝的文章,總之了解這是一個C++的包管理工具就可以了。
流程
下面介紹從GitHub上克隆C++項目以及為這個項目安裝所需依賴項,并完成編譯的全過程。
1 拉取項目
在GitHub上找到你想要克隆的項目,復制地址。
得到地址后,在你想要復制項目的文件夾中右擊,選"open git bash here"
輸入git clone + 復制的地址
等待項目克隆完成
2 編輯vcpkg.json文件
這一步的前提是電腦上已經安裝了vcpkg,并將它的路徑同步到了環境變量中,記住這個環境變量的名稱,在編寫CMakeLists文件時要用,如圖
沒有安裝的話需要找教程安裝一下。
然后根據該項目在README中所描述的依賴項編寫vcpkg.json
編寫vcpkg.json文件
{"name": "electric-inspection-backend","version-string": "0.0.1","dependencies": ["boost","cgal","lastools","spdlog","cxxopts","tbb","jsoncpp","shapelib","eigen3","glm","gmp","mpfr","ceres","libpng","libjpeg-turbo","tiff","glew","glad","glfw3"]}
- name:項目的名稱,標識這個 vcpkg.json 文件所描述的項目。無需在意,這個的作用只是為了寫編譯過程中的日志文件。
- version-string:項目版本號,取決于自己,可直接復制。
- dependencies:依賴庫列表
這里安裝的庫明顯比要求的多,這是因為有些庫并沒有在README中寫明。不過你在后續使用cmake構建時,會提醒你卻庫,在這里再添加就好。
3 修改CMakeLists文件
此時需要修改項目根目錄下的CMakeLists.txt文件,使其能夠連接到vcpkg,自動識別vcpkg.json文件,并開始安裝依賴庫。
注意,vcpkg相關配置代碼必須在project之前,否則無法自動識別vcpkg.json文件,可從下面復制
# vcpkg配置,必須位于project之前
if(DEFINED ENV{VCPKG_ROOT})set(VCPKG_ROOT "$ENV{VCPKG_ROOT}" CACHE PATH "") # 從環境變量中讀取vcpkg根目錄
else()set(VCPKG_ROOT "E:/vcpkg_clone" CACHE PATH "") # 手動設置vcpkg根目錄
endif()message("set VCPKG_ROOT: ${VCPKG_ROOT}")
set(VCPKG_FEATURE_FLAGS "version") # 用于支持自定義依賴版本
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") # 設置vcpkg工具鏈
構建項目
接下來就可以開始使用cmake指令來構建項目,指令可參照該項目在GitHub上給定的指令順序
摁住shift右擊,打開PowerShell窗口,輸入命令,開始安裝
安裝完成
這時可以看到build文件夾中多出了 vcpkg_installed 文件,這就是該項目依賴項的安裝位置。
然后啟動解決方案,運行就可以了。
注意:之后可能代碼中還會出現錯誤,但是這與依賴項安裝就沒關系了。我這里就出現了一些代碼上的錯誤,查資料改一下就可以運行了。