# 前言 為了讓家教實作`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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.