# vcpkg ## Setup ### global 使用套件管理器下載,如 `apt`, `scoop` 等 1. scoop ``` scoop install vcpkg ``` ### project 1. 到你的專案目錄 ``` cd project ``` 2. 使用 git clone 下載 vcpkg ``` git clone https://github.com/microsoft/vcpkg.git ``` 3. 進到 vcpkg 目錄 ``` cd vcpkg ``` 4. 下載 vcpkg.exe ``` ./boostrap-vcpkg.bat ``` ## Install 抱歉了🥲,宇宙第一神 IDE:Visual Studio(Windows 平台預設構建工具)。 範例: + 編譯工具:`mingw` + 建置工具:`ninja` + 鏈結方式:`x64-mingw-static` + 第三方庫:`boost-josn` 註:也可以使用 `x64-mingw-dynamic` 動態鏈結的方式,執行檔會小很多。\ 但執行檔會仰賴 DLL 執行,必須將它們放至與執行檔同一目錄,執行檔才可執行。\ 所有 DLL 所在目錄:`./vcpkg/installed/x64-mingw-dynamic/bin`。 ### example ```cpp= // main.cpp #include <iostream> #include <boost/json.hpp> namespace json = boost::json; int main() { // 建立一個 JSON 物件 json::object person; person["name"] = "Alice"; person["age"] = 30; person["is_student"] = false; // 建立陣列 json::array skills = {"C++", "Python", "Networking"}; person["skills"] = skills; // 輸出為字串(序列化) std::string serialized = json::serialize(person); std::cout << "Serialized JSON:\n" << serialized << "\n\n"; // 解析 JSON 字串 std::string raw_json = R"({"project":"BoostDemo","version":1.2,"contributors":["Alice","Bob"]})"; json::value parsed = json::parse(raw_json); // 讀取內容 json::object& obj = parsed.as_object(); std::cout << "Project: " << obj["project"].as_string() << "\n"; std::cout << "Version: " << obj["version"].as_double() << "\n"; std::cout << "Contributors:\n"; for (auto& name : obj["contributors"].as_array()) { std::cout << " - " << name.as_string() << "\n"; } return 0; } ``` ### global 1. command line ``` vcpkg install boost-json:x64-mingw-static ``` 安裝完成後,應該可以在最後看到一些指示。\ 它會指導你,這個三方庫應該如何加入 CMakeLists.txt。 ``` The package boost-json is compatible with built-in CMake targets of FindBoost.cmake: find_package(Boost REQUIRED COMPONENTS json CONFIG) target_link_libraries(main PRIVATE Boost::json) ``` 2. CMakeLists.txt ```= cmake_minimum_required(VERSION 3.21) project(demo) set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_COMPILER g++) set(CMAKE_CXX_STANDARD 17) set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake) set(Boost_DIR $ENV{VCPKG_ROOT}/installed/x64-mingw-static/share/boost) set(VCPKG_TARGET_TRIPLET x64-mingw-static) find_package(Boost REQUIRED COMPONENTS json CONFIG) add_executable(main main.cpp) target_include_directories(main PRIVATE $ENV{VCPKG_ROOT}/installed/x64-mingw-static/include) target_link_libraries(main PRIVATE Boost::json) ``` 3. build ``` cmake -B build -G "Ninja" cmake --build build ``` ### project 1. command line ``` ./vcpkg.exe install boost-json:x64-mingw-static ``` 2. .vscode/settings.json > 讓 IDE 能正確抓到三方庫的位置(在專案內) ```json= { "C_Cpp.default.includePath": [ "${workspaceFolder}/**", "./vcpkg/installed/x64-mingw-static/include" ], } ``` + CMakeLists.txt ```= cmake_minimum_required(VERSION 3.21) project(demo) set(CMAKE_C_COMPILER gcc) set(CMAKE_CXX_COMPILER g++) set(CMAKE_CXX_STANDARD 17) set(CMAKE_TOOLCHAIN_FILE ./vcpkg/scripts/buildsystems/vcpkg.cmake) # ✅ set(Boost_DIR ./vcpkg/installed/x64-mingw-static/share/boost) # ✅ set(VCPKG_TARGET_TRIPLET x64-mingw-static) find_package(Boost REQUIRED COMPONENTS json CONFIG) add_executable(main main.cpp) target_include_directories(main PRIVATE ./vcpkg/installed/x64-mingw-static/include) # ✅ target_link_libraries(main PRIVATE Boost::json) ``` 3. build ``` cmake -B build -G "Ninja" cmake --build build ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up