Programming Fun
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,461
On Slideshare
2,454
From Embeds
7
Number of Embeds
1

Actions

Shares
Downloads
15
Comments
0
Likes
2

Embeds 7

http://www.slideshare.net 7

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Programming Fun Author: Derek Dai
  • 2. 寫 code, 好玩
    • 嗎 ?
  • 3. Derek 說
    • 寫 code, 當然不好玩
  • 4. 因為 ?
    • 如果
      • 只是想有個能頂著科技新貴的頭銜的工作
      • 只是因為教育機構的廣告說資訊業很’高尚’而加入
      • 只是 8x5x52x30 機械化的動作著
    • 這樣 , 何止是不好玩 , 是真他 X 的痛苦人生
  • 5. 那…怎麼辦 ?
    • 丟棄 ‘寫 code’ 這回事
    • 修正觀念
      • 軟體 研發 , 從來就不是只有寫 code 一件事
      • 彈性是要表現在架構上 , 而不是團隊的紀律 ! 台灣在看軟體業時一直有這樣的誤解
      • 設計 , 是要一直花心思維持的
      • 創意 , 是解決問題的關鍵 ( 軟體從來就不是死板板的 )
      • 溝通 , 是團隊能成功的要素
  • 6. 還有
    • 導入 Open Source
  • 7. 進入正題
    • 將使用的一些玩意兒
      • Eclipse IDE
      • Cmake
      • git
      • GNU toolchain
      • GTK+
      • 完完全全的 free ( 自由 ) & free ( 免費 )
  • 8. 為什麼要用 open source?
    • 跨平台 , 經驗 重用
    • 習慣了 , 就會愛上它
    • 但…也有可能第一次接觸就恨死它
      • Package 散落各處
      • 怎麼組合出 work 的東西 ?
      • Document, give me some document?
      • Where is pre-built binary for XXX platform? I don’t wanna build it myself…
  • 9. 開發工具介紹
    • Eclipse + CDT : 好用的 C/C++ 跨平台 IDE
      • Netbeans 也不錯 , 但目前 CMake 還未支援
    • CMake : 跨平台 /IDE/compiler 的 build/deploy tool
    • git : 超強的分散式版本控制系統
      • TortoisGIT: Windows 下方便的 git frontend
    • Mingw32 : GNU toolchain 的 Windows port
      • binutils
      • GCC
      • GDB
  • 10. 開發工具間的關係 Eclipse Mingw32 GDB GCC Git TortoiseGIT GUI: 不一定要使用 輔助工具 核心開發工具 CMake GUI frontend Source code version management Generate IDE project file Generate make file to build automatically Debug Build
  • 11. 以時間點來看開發工具的關係
    • 以 Madedit 寫了經典的“ hello world”, 以 gcc build 成執行檔 , 以 gdb 除錯
    • Project 加進 2, 3 個檔案後 , build 變得複雜 , 此時以 CMake 自動化 build 流程
    • Code 變大後 , 在 browse & debug 上相形困難 , 以 CMake 產生 IDE 的 project file, 用 Eclipse 便利開發
    • 多次變更 code 後 , 導致有不同時間的版本 , 可考慮以 git 管理
    • 系統在功能性及穩定性達到要求後有發佈的需求 , CMake 可產生多樣的安裝包
  • 12. 建立開發環境 - 安裝 Mingw32
    • http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/
      • 執行 MinGW-5.1.6.exe 網路安裝界面後加選 g++ 及 make
      • 強烈 建議 安裝於 “ c:MinGW”
      • 安裝後 , 請將 “ c:MinGWin” 加到系統 PATH 環境變數中
  • 13. 建立開發環境 - 安裝 gdb
    • http://sourceforge.net/projects/mingw/files/
      • 選 ” GNU Source-Level Debugger” 並下載 6.6
      • 先不要使用太新的版本 , 於 Eclipse 整合除錯時會有問題 (6.8 似乎也是 OK 的版本 )
      • 下載後 , 直接解壓至 “ c:MinGW” 中
  • 14. 建立開發環境 - 安裝 CMake
    • http://www.cmake.org/cmake/resources/software.html
      • 下載並執行 cmake-2.8.0-win32-x86.exe 即可
      • 無特殊安裝目錄需求
      • 請將 CMake 安裝目錄下的 in 加進 PATH
  • 15. 建立開發環境 - 安裝 Eclipse + CDT
    • Eclipse 以 Java 開發 , 需要 JRE
      • http://java.sun.com/javase/downloads/index.jsp
      • 下載 JRE6 or JDK6
      • 安裝
    • Eclipse IDE for C/C++
      • http://www.eclipse.org/downloads/
      • 選 Eclipse IDE for C/C++ Developers 的 Windows 版
      • 下載後 , 解壓縮即可執行
  • 16. 建立開發環境 – 安裝 g it
    • http://code.google.com/p/msysgit/
      • 下載最新版並安裝即可
    • http://code.google.com/p/tortoisegit/
      • TortoiseGit 會使用到 msysygit
        • 這是隻包著糖衣的烏龜 – 在開發跨平臺的程式時 , 不是一直都有整合得這麼好的 GUI 可用的
      • 絕對要會下 git 的命令
  • 17. 建立開發環境 – 安裝 GTK+
    • http://www.gtk.org/download-windows.html
      • 下載 all-in-one bundle , 或是可以各別下載 runtime 及 developlement packages
        • 如果是後者 , 請先瞭解 libraries 間的相依性
      • 解壓後 , 將 bin 目錄加進 PATH 環境變數中 , 會用到下面的部份
        • glib 相關工具
        • pkg-config
        • Runtime libraries (.dlls)
  • 18. 建立 project HelloCmake
    • 目的
      • 確認 git, mingw32, gdb, Eclipse , CMake
    • 建立目錄 HelloCMake, 並將接下來兩頁的 code 各存成 hellocmake.c 及 CMakeLists.txt
      • 在跨平台的開發中 , 要特別注意檔案大小寫
        • Windows 中 file name 是 case insensitive,
        • Linux 則是 case sensitive
        • 所以 , 請假設所有平台都是 case sensitive
        • 但 , 請勿濫用 case sensitive ( 例如於同一目錄中放置同名不同大小寫的檔案 )
  • 19. hellocmake.c
    • /* hellocmake.c */
    • #include <stdio.h>
    • int main()
    • {
    • printf(&quot;Hello Cmake &quot;);
    • return 0;
    • }
  • 20. CMakeLists.txt
    • # CMakeLists.txt
    • PROJECT( HelloCMake )
    • SET( CMAKE_BUILD_TYPE Debug )
    • ADD_EXECUTABLE(
    • hellocmake #Executable name
    • hellocmake #Source file name
    • )
  • 21. 以 Cmake 產生 Makefile
    • CMake 的其中一個功能是 Makefile generator
      • 於 HelloCMake 目錄同一階建立 HelloCMake_build 目錄
      • 於命令列 , cd 進入 HelloCMake_build, 並執行
        • cmake -G&quot;MinGW Makefiles&quot; ..HelloCMake
        • mingw32-make
        • hellocmake.exe
      • 執行程式後 , 應該可以看到 “ Hello Cmake” 的輸出
  • 22.  
  • 23. 以 CMake 產生 Eclipse CDT project
    • 進入 HelloCMake_build, 執行
      • cmake -G&quot;Eclipse CDT4 - MinGW Makefiles&quot; ..HelloCMake
    • 打開 Eclipse, 選 File -> Import… -> General -> Existing Projects into Workspace
      • 於 Select root directory 中輸入 HelloCMake_build 所在完整路徑
      • Finish 後 , Project 即匯入
  • 24.  
  • 25.  
  • 26. 開始 debugging
    • 雖然我們的程式太簡單沒 bug, 但還是可以用 gdb single step 玩玩
      • Double click “printf” 那行的左側 , 增加 break point
      • 於左側分頁展開 Binaries -> right click “hellocmake.exe” -> Debug As -> Locale C/C++ Application -> gdb Debugger
      • Eclipse 即進入 Debug 模式
  • 27.  
  • 28. 單步執行 HelloCMake
    • 按 F5 可 step into, 追進即將執行的 function
    • 按 F6 可 step over, 碰到 function 只當一個步驟走過
    • 按 F7 可 step return, 離開目前的 function, 回到 caller 中的下個執行位置
    • 按 F8 可 Resume, 讓程式自由的執行 , 直到碰到 break pointer, 或是被我們手動打斷
  • 29. 將 HelloCMake 加進版本控制
    • 進到 HelloCMake 中
    • 執行
      • git init 建立 git repository
      • git add * 將 hellocmake.c 及 CMakeLists.txt 進入版本控制的行列中
      • git commit -m “Initial commit” Commit 後 , source 才算真的進入 git, 版號加 1
  • 30. 結束
    • 啥 ! 怎麼沒提到 GTK+ 勒 ? 是 download 心酸的喔 !
      • 看官放心 ~ 耐心等等 , 下個例子就會用到