C++ Academy · บทเรียน

การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก

ดึงไลบรารีภายนอกด้วย vcpkg และ Conan แล้วผสานเข้ากับ CMake

บทเรียน 3 จาก 414 ขั้นตอน

การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงใช้ตัวจัดการแพ็กเกจ

การดาวน์โหลดและสร้างส่วนพึ่งพาสำหรับ C++ ด้วยตนเองเป็นเรื่องยุ่งยาก ตัวจัดการแพ็กเกจช่วยทำให้การดึงข้อมูล การสร้าง และการกำหนดค่าไลบรารีจากภายนอกเป็นแบบอัตโนมัติ

ตัวเลือกหลักสองตัว

ตัวจัดการแพ็กเกจ C++ ชั้นนำสองตัว:

  • vcpkg — ได้รับการสนับสนุนจาก Microsoft ใช้เฉพาะซอร์สโค้ด และผสานการทำงานกับ CMake
  • Conan — โอเพนซอร์ส รองรับไฟล์ไบนารี และยืดหยุ่นกว่า

การตั้งค่า vcpkg

โคลนคลังเก็บ vcpkg และเริ่มต้นระบบ กำหนดไฟล์ชุดเครื่องมือในคำสั่ง CMake

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && ./bootstrap-vcpkg.sh
./vcpkg install fmt spdlog

การเชื่อมโยง vcpkg ใน CMake

ส่งไฟล์ชุดเครื่องมือไปพร้อมกับการกำหนดค่า CMake จากนั้น find_package จะทำงานตามปกติ

cmake -B build -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake

การใช้ vcpkg.json (โหมดรายการกำกับ)

ประกาศส่วนพึ่งพาในไฟล์ vcpkg.json โดย vcpkg จะติดตั้งส่วนพึ่งพาเหล่านั้นแยกตามโครงการ

{
  "name": "my-app",
  "version-string": "0.1.0",
  "dependencies": ["fmt", "spdlog", "nlohmann-json"]
}

การตั้งค่า Conan

ติดตั้ง Conan ด้วย pip แล้วสร้าง conanfile.txt หรือ conanfile.py

pip install conan
conan profile detect
conan install . --build=missing

ตัวอย่าง conanfile.txt

ระบุรายการที่ต้องใช้ ตัวสร้าง และตัวเลือก

[requires]
fmt/10.1.1
spdlog/1.12.0

[generators]
CMakeDeps
CMakeToolchain

การผสาน Conan กับ CMake

Conan จะสร้างไฟล์ CMake เมื่อคุณเรียกใช้ install ใช้ไฟล์เหล่านั้นผ่านไฟล์ชุดเครื่องมือ หรือรวมไฟล์ CMake ที่สร้างขึ้น

cmake -B build -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake

FetchContent: ทางเลือกแบบเนทีฟของ CMake

สำหรับกรณีง่าย ๆ CMake มี FetchContent ในตัวเพื่อดาวน์โหลดและเพิ่มส่วนพึ่งพาขณะกำหนดค่า

include(FetchContent)
FetchContent_Declare(fmt
    GIT_REPOSITORY https://github.com/fmtlib/fmt.git
    GIT_TAG 10.1.1
)
FetchContent_MakeAvailable(fmt)
target_link_libraries(myapp PRIVATE fmt::fmt)

การเลือกเครื่องมือ

แนวทางอย่างรวดเร็ว:

  • โครงการขนาดเล็ก → FetchContent
  • โครงการขนาดใหญ่ที่มีส่วนพึ่งพาไม่ซับซ้อน → vcpkg
  • การสร้างที่ซับซ้อนและมีแคชไฟล์ไบนารี → Conan

การสร้างที่ทำซ้ำได้

ตรึงเวอร์ชันเฉพาะไว้ในไฟล์รายการกำกับ ไฟล์ล็อก (conan.lock) จะบันทึกเวอร์ชันที่แก้ไขแล้วอย่างถูกต้อง เพื่อให้สร้างซ้ำได้ผลเหมือนเดิม

การแคชไฟล์ไบนารี

ทั้ง Conan และ vcpkg รองรับการแคชไฟล์ไบนารี ทำให้การสร้างโดย CI เร็วขึ้นหลายเท่าตัว ควรตั้งค่าแคชที่ใช้ร่วมกันสำหรับทีม

ตรวจสอบความเข้าใจ

กลไกใดของ CMake ที่ดาวน์โหลดและสร้างส่วนพึ่งพาขณะกำหนดค่า โดยไม่ต้องใช้เครื่องมือภายนอก

สรุป

vcpkg และ Conan ช่วยทำให้การจัดการส่วนพึ่งพาของ C++ เป็นแบบอัตโนมัติ ส่วน FetchContent ของ CMake เป็นทางเลือกน้ำหนักเบา ควรตรึงเวอร์ชัน แคชไฟล์ไบนารี และใช้ find_package ใน CMake เพื่อใช้งานไลบรารีที่ติดตั้งไว้

เริ่มต้นได้ฟรี

เรียนรู้ C++ ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

คำถามที่พบบ่อย

บทเรียน “การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก”

ดึงไลบรารีภายนอกด้วย vcpkg และ Conan แล้วผสานเข้ากับ CMake คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้างโปรเจกต์ CMake และ CMakeLists.txt
  2. เป้าหมาย การเชื่อมโยง และการมองเห็น PUBLIC PRIVATE
  3. การใช้ vcpkg และ Conan จัดการไลบรารีภายนอก
  4. การสร้างไฟล์สำหรับ IDE และการสร้างข้ามแพลตฟอร์ม
← กลับไปที่ C++ Academy