Clion第一個SDL程序(Mac)

SDL官網:https://www.libsdl.org/

SDL2.0文檔地址:http://wiki.libsdl.org/Introduction

簡介

直接翻譯了一下官網介紹:

簡單的DirectMedia Layer是一個跨平臺開發庫,旨在通過OpenGL和Direct3D提供對音頻,鍵盤,鼠標,操縱桿和圖形硬件的低層訪問。 它被視頻播放軟件,模擬器和流行遊戲使用,包括Valve屢獲殊榮的目錄和許多Humble Bundle遊戲。

SDL正式支持Windows,Mac OS X,Linux,iOS和Android。 可以在源代碼中找到對其他平臺的支持。

SDL是用C語言編寫的,與C ++本身一起工作,並且有幾種其他語言可用的綁定,包括C#和Python。

SDL 2.0在zlib許可下分發。 此許可證允許您在任何軟件中自由使用SDL。

SDL開發包位置

用命令:brew info sdl2

Superli-2:ffmpeg-leaning superli$ brew info sdl2
sdl2: stable 2.0.9 (bottled), HEAD
Low-level access to audio, keyboard, mouse, joystick, and graphics
https://www.libsdl.org/
/usr/local/Cellar/sdl2/2.0.9_1 (87 files, 4.5MB) *
  Poured from bottle on 2019-05-02 at 19:53:15
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/sdl2.rb
==> Options
--HEAD
	Install HEAD version
==> Analytics
install: 74,178 (30 days), 199,950 (90 days), 518,556 (365 days)
install_on_request: 8,650 (30 days), 23,572 (90 days), 77,346 (365 days)
build_error: 0 (30 days)

可以看到我的SDL開發包在:/usr/local/Cellar/sdl2/2.0.9_1目錄下。實際上這是Xcode自帶的,並沒有讓我手動安裝。

如果沒有安裝的同學,可以敲命令:brew install sdl2安裝。

注意是sdl2而不是sdl,兩個版本的api向去甚遠,別怪我沒有提醒你。

Clion創建第一個SDL程序

Clion創建工程的大致流程是:Clion - > File -> New Project -> C++ Excutable -> 在location裏改一下工程目錄-> create。

修改CMakeLists.txt文件成這樣:

cmake_minimum_required(VERSION 3.10)
project(PlaySDL)

set(CMAKE_CXX_STANDARD 11)
set(SDL_DIR /usr/local/Cellar/sdl2/2.0.9_1/) # 這個SDL開發包的路徑,可以通過brew info sdl2查出來
include_directories(${SDL_DIR}/include/) # 添加SDL頭文件搜索路徑
link_libraries(${SDL_DIR}/lib/) # 增加SDL鏈接庫目錄

add_executable(PlaySDL main.cpp)

target_link_libraries(PlaySDL SDL2 SDL2_test SDL2main) # 鏈接目標庫

target_link_libraries中包含的SDL2SDL2_testSDL2main是SDL的共享庫,在/usr/local/Cellar/sdl2/2.0.9_1/lib/目錄下。

main.cpp文件是這樣的:

#include <iostream>
extern "C" {
#include <SDL2/SDL.h>
}
using namespace  std;

const int WIDTH = 400, HEIGHT = 400; // SDL窗口的寬和高
int main() {
    if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { // 初始化SDL
        cout << "SDL could not initialized with error: " << SDL_GetError() << endl;
    }
    SDL_Window *window = SDL_CreateWindow("Hello SDL world!", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, SDL_WINDOW_ALLOW_HIGHDPI); // 創建SDL窗口
    if (NULL == window) {
        cout << "SDL could not create window with error: " << SDL_GetError() << endl;
    }

    SDL_Event windowEvent; // SDL窗口事件
    while(true) {
        if (SDL_PollEvent(&windowEvent)) { // 對當前待處理事件進行輪詢。
            if (SDL_QUIT == windowEvent.type) { // 如果事件爲推出SDL,結束循環。
                cout << "SDL quit!!" << endl;
                break;
            }
        }
    }
    SDL_DestroyWindow(window); // 推出SDL窗體
    SDL_Quit(); // SDL推出
    return 0;
}

好了就是這麼簡單,運行看一下效果:

在這裏插入圖片描述

就是這麼醜,我們後面會讓它漂亮起來的。
最後附上工程源碼github地址:傳送門

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章