---
# System prepended metadata

title: SDL 開發環境設置
tags: [資訊之芽2018 Midterm Project]

---


# SDL 開發環境設置   

###### tags: `資訊之芽2018 Midterm Project` 

SDL，全名Simple DirectMedia Layer， 是一套跨平台多媒體開發函式庫，由C語言寫成，他提供了各種控制圖像、聲音、基本IO的function給大家使用。因此我們這次遊戲的主要架構會建構在SDL C++這個框架上。我們使用的SDL版本是2.0.8 .

接下來就是設置的步驟.  
Mac 請看：[Mac](#For-MacnbspUsers)   
Window 請看：[Win](#For-Window-Users)   

## <a name="mac">For Mac Users</a>
這次主要會在終端機(Terminal)做操作。
### Step 1
#### Step 1.1 安裝Xcode & brew
請先到App Store 安裝XCode，檔案有點大，會需要一段時間。   
Xcode ?  
> 在mac上做開發的一個IDE（像是dev c++也是ide)，可以開發iphone或mac上的應用程式，他文字編輯器、編譯器等等的都有包含，不過我們這次只是利用他來建立你c++編譯器(g++)   
> 
**UPDATE**
**------------------------------------------------**
[**homebrew**](https://brew.sh/index_zh-tw.html) ?
> 簡單來說，他是一個套件管理軟體，而套件就是人家寫好的一些可以用的程式。所以你可以用homebrew安裝一些你會用到的而且別人寫好的code(省時間呀～)，或者更新那個套件等等。      

在安裝完Xcode後，開啟Xcode同意授權，等Xcode授權完畢且開啟完成後，開啟 終端機(在 finder 點 /應用程式/工具程式/終端機） 之後，輸入並執行(按Enter):      
  `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`   
這段指令會安裝brew.
**---------------------------------------**

#### Step 1.2 安裝sdl2
打開終端機，執行：  
```
brew install sdl2
brew install sdl2_image
brew install sdl2_ttf
```     
brew(也就是homebrew)就會去找編譯好的sdl2 函數庫，下載到你的電腦上。  

可以執行`ls /usr/local/Cellar/`(ls是一個指令，叫終端機list出 /usr/local/Cellar/ 這個資料夾有什麼東西) **會出現一個`sdl2, sdl2_image, sdl2_ttf`項目**   

### Step 2 創建new project
你可以單獨地創建一個project，然後把sdl2等之前裝的東西include到你的project，不過有點耗時，所以我們直接提供你包裝好的template project，這樣你只要專心把main.cpp寫好。請[點選](https://drive.google.com/file/d/1nywQ6koov2mGNVCqZpRctG-MZJ9pXhHs/view?usp=sharing)下載後解壓縮，裡面的main.cpp是測試程式。

現在打開終端機，cd 到這個資料夾的路徑(如果不知道路徑，直接把資料夾拉進終端機就可以了)，然後執行：   
`make game`  
這個指令會根據makefile編譯你的program。     
編譯完成，會有一個叫做play的執行檔可以執行    
接著run 整個program:    
`./play`    
如果有一個白色的視窗跑出來兩秒，就大功告成了~~~~   
也就是說這個資料夾現在編譯、執行時可以成功地include到SDL2的函數庫，也就是說可以畫畫、做互動了。     

**UPDATE** 
~~**現在你可以把[作業檔案](https://tw-csie-sprout.github.io/c2018/#!project1.md) 裡的pong.cpp跟 util.hpp 加入這個project，並把pong.cpp檔名改成main.cpp，開始創建你的遊戲了～**~~
**UPDATE 2**
**把[作業檔案](https://tw-csie-sprout.github.io/c2018/#!project1.md) 裡的pong.cpp取代前面測試用的main.cpp，開始創建你的遊戲了～**

Happy Coding~!

---
## <a name="win">For Window Users</a>


** **update 3** **
**For Window user，除了底下安裝環境設定說明，請同時參考**[**影片**]https://youtu.be/_sC-Qz1f8PI)。

**問問題前也請先確認自己做的跟影片完全一樣謝謝。**




### Step 1
假設已安裝Dev C++
#### Step 1.1 下載裝有SDL2, SDL2_image, SDL2_ttf 的 template project
基本上，可以單獨地安裝這三種套件，不過為了節省時間，助教已經把他們打包成一個資料夾了，  
請點[**此網址**](https://drive.google.com/file/d/1G_aiZXnkZLwrtBWZiEoH93LjUG_pYnSa/view?usp=sharing)並解壓縮。

#### Step 1.2 在dev c++ 設定
打開Dev C++，按`工具（T）/編譯器選項（E）`
![](https://i.imgur.com/RXVaVuz.png)


到`目錄（Directories`)的`C++印入檔（C++ includes)`點擊`開啟`（藍色框框裡的)
![刪除無所作用的(Delete Invalid）的右上角icon]   
![](https://i.imgur.com/nQWHFKR.png)

從剛剛下載並解壓縮後的裡面有三個資料夾，
選擇名叫SDL2-2.0.8這個資料夾其中的`x86_64-w64-mingw32`的 **`include`** 資料夾，如下圖。   
![](https://i.imgur.com/GFRNFqK.png)


按確定後，再按`新增(Add)`  

 ![](https://i.imgur.com/tfdBw77.png)

出現：  
![](https://i.imgur.com/jkZcoGy.png)




再重複類似的動作，到`程式庫(Libraries)`，開啟`x86_64-w64-mingw32`的 **`lib`** 資料夾，按確定。  

![](https://i.imgur.com/hlvMAtW.png)


最後出現  
![](https://i.imgur.com/o7YBO44.png)



### Step 2 configure project options
請進到`project`這個資料夾，並點選裡面的`project.dev`打開project，接著到`專案Project/專案選項(project options)`，選擇`General(一般)`，點選 **`Win32 GUI`**(這樣跑的時候，console 不會跳出來)，  


![](https://i.imgur.com/sh2SKT4.jpg)  

![](https://i.imgur.com/1HZV3qG.png)



接著選擇`參數(Parameters)/`，在`Linker`輸入（如下圖):
```
-lmingw32
-lSDL2main
-lSDL2
-lSDL2_image
-lSDL2_ttf
```

在`C++ compiler`輸入：`--std=c++11`

基本上現在這個project可以連接到sdl, sdl_image等函式庫了。
現在來測試一下。project本身已經幫各位設定了一個測試的`main.cpp`，直接按編譯並執行整個project，如果有一個白色的視窗跑出來兩秒就消失，**就大功告成了**~~~~

**UPDATE** 
~~**現在你可以把[作業檔案](https://tw-csie-sprout.github.io/c2018/#!project1.md) 裡的pong.cpp跟 util.hpp 加入這個project，並把pong.cpp檔名改成main.cpp，開始創建你的遊戲了～**~~
**UPDATE 2**
**把[作業檔案](https://tw-csie-sprout.github.io/c2018/#!project1.md) 裡的pong.cpp取代前面測試用的main.cpp，開始創建你的遊戲了～**
Happy Coding~!