模組化開發-用 CMake + VCpkg 封裝並重用 C++ 函式庫
Code
project-root/
│── CMakeLists.txt
│── vcpkg.json # vcpkg 套件描述
│── libs/
│ └── image_processing/
│ ├── include/
│ │ └── image_processing.hpp
│ ├── src/
│ │ └── image_processing.cpp
│ └── CMakeLists.txt
│── apps/
│ ├── cli_tool_A/
│ │ └── CMakeLists.txt
│ └── cli_tool_B/
│ └── CMakeLists.txt
libs/image_processing/CMakeLists.txtcmake
cmake_minimum_required(VERSION 3.15)
project(image_processing LANGUAGES CXX)
add_library(image_processing src/image_processing.cpp)
target_include_directories(image_processing PUBLIC include)
target_compile_features(image_processing PUBLIC cxx_std_17)
CMakeLists.txtcmake
cmake_minimum_required(VERSION 3.15)
project(ModularCpp LANGUAGES CXX)
# 引入子模組
add_subdirectory(libs/image_processing)
add_subdirectory(apps/cli_tool_A)
add_subdirectory(apps/cli_tool_B)
apps/cli_tool_A/CMakeLists.txtcmake
cmake_minimum_required(VERSION 3.15)
project(cli_tool_A LANGUAGES CXX)
add_executable(cli_tool_A main.cpp)
target_link_libraries(cli_tool_A PRIVATE image_processing)
vcpkg.json)json
{
"name": "modular-cpp",
"version-string": "1.0.0",
"dependencies": [
"opencv4",
"fmt"
]
}
git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=./vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
| 特性 | Conan | vcpkg |
|---|---|---|
| 跨平台 | Windows/Linux/macOS | Windows/Linux/macOS |
| 套件來源 | 公開/私有 Conan server | 官方 registry + GitHub |
| 版本控制 | 強,支援多版本並行 | 弱,通常只有最新版本 |
| 企業私有倉庫 | 支援 | 不支援 (需 fork registry) |
| 整合度 | 靈活,CI/CD 常用 | 微軟官方,VS/VSCode 整合佳 |
| 使用體驗 | 類似 pip install |
類似 apt-get install |
whl 一樣方便封裝、分發,甚至建私有倉庫 → Conan 更適合。| File8 | File | Last Modified |
|---|---|---|
| 模組化開發-VCpkg工具 | 模組化開發-VCpkg工具 | 1:22 AM - December 07, 2025 |
| 查詢目前vcpkg registry所在路徑 | 查詢目前vcpkg registry所在路徑 | 1:22 AM - December 07, 2025 |
| 本地 `src` vs. `vcpkg_from_git` | 本地 src vs. vcpkg_from_git | 1:22 AM - December 07, 2025 |
| 如何產生 git-tree | 如何產生 git-tree | 1:22 AM - December 07, 2025 |
| 使用 vcpkg x-add-version 搭配 Git 或目錄結構工具,自動建立與維護本地 vcpkg registry | 使用 vcpkg x-add-version 搭配 Git 或目錄結構工具,自動建立與維護本地 vcpkg registry | 1:22 AM - December 07, 2025 |
| vcpkg-local-how-to | vcpkg-local-how-to | 1:22 AM - December 07, 2025 |
| vcpkg_checker | vcpkg_checker | 1:22 AM - December 07, 2025 |
| vcpkg 指令總覽表 | vcpkg 指令總覽表 | 1:22 AM - December 07, 2025 |