# 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.