iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
Software Development

C++ 套件管理器求生指南 Conan vs Vcpkg系列 第 5

D05: Xcode 搭配 Conan 套件管理器

  • 分享至 

  • xImage
  •  

昨天我們用 Visual Studio 搭配 Conan 套件管理器,成功導入兩套第三方函式庫:fmt + nolhmann JSON。

今天我們要來接上第二個建置系統:Xcode。

這篇的實測環境:

  • macOS 26 + Xcode 26.6.0(Apple Clang 21)
  • Conan 2.32.0

步驟一:建立 Xcode 專案

用 Xcode 建一個 macOS > Command Line Tool 專案,語言選 C++。

接著往專案根目錄添加一個名為 conanfile.txt 的文字檔案,作為 Conan 的設定入口。

目錄結構如下:

hello-conan-xcode/
├── conanfile.txt
├── hello-conan-xcode.xcodeproj
└── hello-conan-xcode/
    └── main.cpp

步驟二:撰寫 conanfile.txt

開啟 conanfile.txt,填入以下內容。

[requires]
fmt/12.2.0
nlohmann_json/3.12.0

[generators]
XcodeDeps
XcodeToolchain

[requires] 區塊,寫我們想要導入的函式庫+版本號碼,中間用斜線隔開,一個函式庫一行。(跟前兩篇完全一樣)

此範例用了大家耳熟能詳的 fmt 以及 nlohmann JSON 函式庫。

[generators] 區塊則是填入 XcodeDeps + XcodeToolchain,告訴 Conan 我們想要對接 Xcode,請你產生 Xcode 設定檔案 (xcconfig)。

步驟三:執行 Conan Install 安裝套件

開啟終端機(Terminal)並切換到專案的根目錄,執行以下指令:

conan install . --build=missing -of conan -s build_type=Release
conan install . --build=missing -of conan -s build_type=Debug

conan install 就是安裝套件的指令。

--build=missing 是告訴 Conan 萬一沒辦法從伺服器上找到預編譯好的二進位檔,就抓原始碼下來現場編譯。
-of=conan -of 是 output-folder 的縮寫,指示 Conan 把產生的 Xcode 設定檔案放進 conan 子目錄下。

因為 Xcode 專案通常有兩種組態(Debug/Release),所以我們需要執行安裝指令兩次,分別安裝Debug/Release兩種版本的二進位檔。

跑完之後 conan/ 底下會多出一堆 .xcconfig,這樣就表示安裝成功了:

conan/
├── conan_config.xcconfig
├── conandeps.xcconfig
├── conan_fmt.xcconfig
├── conan_fmt__fmt_release_arm64.xcconfig
├── ...
├── conantoolchain_release_arm64.xcconfig
└── conantoolchain.xcconfig

這麼多檔案裡面,我們只需關注一個檔案:conan_config.xcconfig

步驟四:在 Xcode 中匯入設定檔

現在來到關鍵一步了,匯入 xcconfig 設定檔!

一、把 conan/conan_config.xcconfig 拖進 Xcode 的專案導覽列

這裡要特別小心!!要拖放到藍色專案圖示那一行上再放開,不能只拖到左欄上的隨便地方。

然後選擇:Reference files in place。(如果做錯這步,Xcode會把檔案複製一份到專案目錄下,而不是引用 conan 子目錄下的檔案,整個目錄結構就亂了)

點選 PROJECT(不是 Target)> Info > Configurations

展開 Debug 和 Release,專案層級的設定檔選成 conan_config.xcconfig

這樣子就成功把 Conan 套件和 Xcode 連結起來囉!

步驟五:編譯專案並執行!

現在 main.cpp 裡面已經可以直接使用 fmt 以及 nlohmann JSON 函式庫了。

這是 main.cpp 的原始碼:

#include <fmt/base.h>
#include <nlohmann/json.hpp>

int main() {
    nlohmann::json j = {
        {"name", "Conan"},
        {"language", "Python"},
        {"stars", 9000}
    };

    fmt::print("Hello, {}!\n", j["name"].get<std::string>());
    fmt::print("{}\n", j.dump(2));
    return 0;
}

從頭到尾都不需要自己設定 Header Search Paths/Library Search Paths。

按下 ⌘R 進行編譯與執行!就會看到以下的訊息成功印出囉。

大功告成。

明天來看建置系統的最後一篇:Makefile。


上一篇
D04: Visual Studio 搭配 Conan 套件管理器
下一篇
D06:Makefile 搭配 Conan 套件管理器
系列文
C++ 套件管理器求生指南 Conan vs Vcpkg6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言