# 前言 為了讓家教實作`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) # 撒花~~