# 前言 為了讓家教實作`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的下載連結  選擇 **SDL2-2.28.1.dmg**,反正結尾要是.dmg  注意:如果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版本的。  因為選擇2023年份的版本會出現檔案毀損的畫面,和先前SDL_image遇到的情況一樣。  ## STEP2. 把 framework 放到正確路徑 打開 .dmg檔案會看到這樣的畫面,SDL2、SDL_ttf、SDL_image、SDL_mixer都會有屬於他們的framework資料夾 > SDL_ttf  >SDL2  首先打開Finder,按下 `command + shift + g` 會出現下方畫面,輸入 `/Library/Frameworks`  就會進到這個畫面。把.dmg檔案中的 framework 拖移到 `/Library/Frameworks` 裡面。(SDL_mixer同理)  ## STEP3. 開啟XCode檔案 ## STEP4. 導入SDL2、SDL_ttf、SDL_image、SDL_mixer 的 header 點選 「build settings」,然後搜尋 「search paths」  在「header search paths」那邊新增路徑,也許你的路徑和我的不一樣,反正就是一對「.h」檔案存放的資料夾的路徑就是了。  ## STEP5. 導入SDL2、SDL_ttf、SDL_image、SDL_mixer 的 Library 點「general」,在「frameworks and libraries」那邊點選「+」,增添unix執行檔。  點選「+」過後,點「add other...」,點「add files...」  找到 framework 的資料夾位置(快捷鍵`command + shift + g` 並且輸入 `/Library/Frameworks`),找到後點選「open」即可 > SDL2  > SDL_ttf  > SDL_image  (SDL_mixer同理) 點開「build phases」,點「link binary with libraries」看裡面有沒有顯示SDL2、SDL_ttf、SDL_image 和 SDL_mixer 的檔案,若沒有就手動添加,步驟跟剛剛一樣。(但通常會自動加好啦)  點選 「build settings」,然後搜尋 「search paths」,在「library search paths」那邊新增路徑。(其實也就四條路徑,剛剛那四個unix執行檔的路徑)  ## STEP6. 寫你的程式 ## STEP7. 刪掉標頭檔案的"SDL2/" 如果你在執行程式的時候跳出錯誤,跟你說 <SDL2/SDL2.h>不存在的話,那就狠心把前面的`SDL2/`刪光光。 但要刪很久就是了,因為SDL2的標頭檔爆炸多 :) ## STEP8. 處理權限問題 我在SDL_image 和 SDL_mixer都遇到相同的問題。 他會出現  首先你要打開設定 > 安全性與隱私權 ,然後把下方的鎖頭解開  就會出現以下畫面,按下「強制允許」就好啦,就可以去跑你的程式~~  # 撒花~~
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up