---
# System prepended metadata

title: MacBook XCode SDL2安裝

---

# 前言
為了讓家教實作`c++`專案遊戲，自學SDL2（之前試用JAVA做專案），結果在處理環境花不少時間。希望能幫到想要用`c++`寫程式然後顯示出視窗的人！

# 時間
2023.7.20

# 個人環境
1. macOS Monterey 版本12.5.1
2. MacBook Pro (13-inch, 2020, Two Thunderbolt 3 ports)
3. XCode 13.4.1

# 簡單介紹
如果你需要讓專案更完整，那下載一個SDL2是完全不夠的ㄛ。

1. SDL2：主要架構
2. SDL_ttf：文字插件
3. SDL_image：圖片插件
4. SDL_mixer：音訊插件

# 步驟
## STEP1-1. 下載SDL2、SDL_ttf、SDL_image

https://www.studyplan.dev/intro-to-programming/sdl-setup-windows

點進去上面的網址，會看到SDL2、SDL_ttf、SDL_image的下載連結

![](https://hackmd.io/_uploads/S1wBah05h.png)

選擇 **SDL2-2.28.1.dmg**，反正結尾要是.dmg

![](https://hackmd.io/_uploads/B1f3p3R5n.png)

注意：如果SDL_image使用最新年份的檔案，出現「檔案已毀損」，請下載2019年份的2.0.5版本（我是這個就過了，其他的都不行）

下載連結：https://www.libsdl.org/projects/SDL_image/release/

## STEP1-2. 下載SDL_mixer
https://www.libsdl.org/projects/SDL_mixer/release/
點選上方網站下載，我選擇的是2.0.4版本的。
![](https://hackmd.io/_uploads/Sk9LXJgo2.png)

因為選擇2023年份的版本會出現檔案毀損的畫面，和先前SDL_image遇到的情況一樣。

![](https://hackmd.io/_uploads/S101Eyejn.png)


## STEP2. 把 framework 放到正確路徑

打開 .dmg檔案會看到這樣的畫面，SDL2、SDL_ttf、SDL_image、SDL_mixer都會有屬於他們的framework資料夾

> SDL_ttf
![](https://hackmd.io/_uploads/BJQACnR9n.png)

>SDL2
![](https://hackmd.io/_uploads/S18qNTA53.png)


首先打開Finder，按下 `command + shift + g` 會出現下方畫面，輸入 `/Library/Frameworks`
![](https://hackmd.io/_uploads/ByX2kp0cn.png)

就會進到這個畫面。把.dmg檔案中的 framework 拖移到 `/Library/Frameworks` 裡面。（SDL_mixer同理）

![](https://hackmd.io/_uploads/SJ701aC9h.png)

## STEP3. 開啟XCode檔案

## STEP4. 導入SDL2、SDL_ttf、SDL_image、SDL_mixer 的 header
點選 「build settings」，然後搜尋 「search paths」
![](https://hackmd.io/_uploads/rkQBWT0c2.png)

在「header search paths」那邊新增路徑，也許你的路徑和我的不一樣，反正就是一對「.h」檔案存放的資料夾的路徑就是了。
![](https://hackmd.io/_uploads/ry8iW6Aqh.png)

## STEP5. 導入SDL2、SDL_ttf、SDL_image、SDL_mixer 的 Library
點「general」，在「frameworks and libraries」那邊點選「+」，增添unix執行檔。
![](https://hackmd.io/_uploads/HkY7G60qh.png)

點選「+」過後，點「add other...」，點「add files...」
![](https://hackmd.io/_uploads/ryrPzTCqh.png)

找到 framework 的資料夾位置（快捷鍵`command + shift + g` 並且輸入 `/Library/Frameworks`），找到後點選「open」即可

> SDL2
![](https://hackmd.io/_uploads/rkeXQpCc2.png)

> SDL_ttf
![](https://hackmd.io/_uploads/SJ5bXpAcn.png)

> SDL_image
![](https://hackmd.io/_uploads/Sy0kQ6C9h.png)

(SDL_mixer同理)

點開「build phases」，點「link binary with libraries」看裡面有沒有顯示SDL2、SDL_ttf、SDL_image 和 SDL_mixer 的檔案，若沒有就手動添加，步驟跟剛剛一樣。（但通常會自動加好啦）
![](https://hackmd.io/_uploads/r1ELX6A5n.png)

點選 「build settings」，然後搜尋 「search paths」，在「library search paths」那邊新增路徑。（其實也就四條路徑，剛剛那四個unix執行檔的路徑）
![](https://hackmd.io/_uploads/SkBm46Cq3.png)

## STEP6. 寫你的程式

## STEP7. 刪掉標頭檔案的"SDL2/"

如果你在執行程式的時候跳出錯誤，跟你說 <SDL2/SDL2.h>不存在的話，那就狠心把前面的`SDL2/`刪光光。
但要刪很久就是了，因為SDL2的標頭檔爆炸多 :)

## STEP8. 處理權限問題 
我在SDL_image 和 SDL_mixer都遇到相同的問題。

他會出現
![](https://hackmd.io/_uploads/rJOR4Jlsh.png)

首先你要打開設定 > 安全性與隱私權 ，然後把下方的鎖頭解開
![](https://hackmd.io/_uploads/B1A-HJlo3.png)

就會出現以下畫面，按下「強制允許」就好啦，就可以去跑你的程式～～
![](https://hackmd.io/_uploads/HJQGHygsh.png)


# 撒花～～