Cài đặt SFML - Ep1 - Phần 1
C++
38
game
11
sfml
6
game_programming
6
White

Harding Adonis viết ngày 24/03/2019

OK xin chào mọi người, ở bài viết trước mình đã giới thiệu sơ lược về SFML rồi. Và bây giờ mình sẽ hướng dẫn các bạn cài đặt SFML vào project.

Link bài viết: Ep0

OK. Như đã nói trong Ep0, SFML là một thư viện chạy đa nền tảng, cho nên có thể cài đặt trên Windows, Linux và MacOS. Nhưng có vấn đề là mình không có máy Mac nên mình sẽ chỉ hướng dẫn cài đặt và build project trên Windows và Linux. Thế nên bạn nào dùng Mac thì chịu khó xem Tutorial của SFML và xem Youtube hướng dẫn cài đặt.

  • Tutorial của SFML: Link

Vì sẽ hướng dẫn kĩ cho nên mình sẽ chia làm 3 phần:

  • Phần 1: Hướng dẫn cài đặt cho Visual Studio trên Windows.
  • Phần 2: Hướng dẫn cài đặt cho Codeblocks trên Windows.
  • Phần 3: Hướng dẫn cài đặt cho Codeblocks cho Linux.

OK, bắt đầu nào.

1. Tải bản pre-built SFML

Để tải thì các bạn lên trang chủ của SFML.
alt text
Trang chủ: https://www.sfml-dev.org/

  • Tại trang chủ thì các bạn chọn Download. alt text
  • Hiện tại thì phiên bản mới nhất của SFML là 2.5.1, ta chọn vào SFML 2.5.1. alt text
  • Tại đây, các bạn sẽ thấy các bản pre-built cho các phiên bản của Visual Studio. Các bản này phân ra làm 2 loại: 32bit và 64bit. Nếu bạn chọn bản 32bit thì khi build ra chương trình có thể chạy trên cả windows 32bit và 64bit. Còn bạn chọn 64bit thì khi build ra chương trình chỉ chạy được trên windows 64bit. alt text

Ở đây mình sẽ tải bản cho Visual Studio 2017 64bit nhé!

2. Tìm hiểu các thư mục trong bản pre-built

  • Sau khi tải về, các bạn tiến hành giải nén sẽ được như hình. Ta chỉ quan tâm các thư mục bin, include, lib. alt text
  • Thư mục include là thư mục chứa các file header của SFML. Khi code các bạn phải include chúng thì mới có thể dùng được SFML. alt text
  • Thư mục lib là thư mục chứa các file .lib. Cái này mình chả biết giải thích sao :laughing: nhưng nôm na là phải có để các bạn có thể build ra file .exe. Nếu không sẽ bị lỗi alt text
  • Thư mục bin là thư mục chứa các file .dll (dynamic linker library). Cần thiết cho chương trình khi build ở dạng dynamic linker. alt text
  • Trong thư mục examples là các chương trình demo của SFML, bạn có thể vào để thử. Nếu lúc chạy có bị thiếu file .dll thì cứ vào thư mục bin mà tìm. alt text

3. Cài đặt SFML vào project

3.1. Tạo project trên Visual Studio

  • Các bạn tạo cho mình một Empty project. Ở đây mình sẽ đặt tên là SFML-Tutorial. alt text alt text
  • Rồi các bạn add file Main.cpp vào project. alt text
  • Lúc nãy nếu các bạn tải bản SFML cho windows 64bit thì chỉnh project ở dạng x64 (bạn nào tải 32bit thì thôi). alt text

3.2. Cấu hình project

  • Các bạn chọn chuột phải vào tên project sau đó chọn Property. alt text
  • Sau khi mở, các bạn chọn đến mục C++ ---> General ---> Additional Include Directories ---> Edit. alt text
  • Tại đây, các bạn chọn đến thư mục include trong thư mục SFML đã tải về (trong ảnh gif mình chỉ làm bên Debug, bên Release các bạn làm tương tự, do mình lười thôi :laughing:). alt text
  • Tiếp theo các bạn chọn đến mục Linker ---> General ---> Additional Library Directories ---> Edit. alt text
  • Tại đây, các bạn chọn đến thư mục lib trong thư mục SFML đã tải về (trong ảnh gif mình chỉ làm bên Debug, bên Release các bạn làm tương tự, lí do như trên :laughing:). alt text
  • Sau đó các bạn đến mục Linker ---> Input ---> Additional Dependencies ---> Edit. alt text
  • Ở bước này sẽ có sự khác nhau giữa Release và Debug nên mình sẽ chia ra 2 phần.
    • Ở Debug, các bạn gõ như sau (gõ như thế là đã cài đủ 5 module của SFML, copy paste mỗi cái cái rồi enter rồi tiếp tục các khác).
      • sfml-graphics-d.lib
      • sfml-audio-d.lib
      • sfml-network-d.lib
      • sfml-window-d.lib
      • sfml-system-d.lib alt text
    • Ở Release, các bạn gõ như sau.
      • sfml-graphics.lib
      • sfml-audio.lib
      • sfml-network.lib
      • sfml-window.lib
      • sfml-system.lib alt text

Sau đó các bạn nháy OK để hoàn tất các quá trình.

3.3. Test thử

Thế là OK. Bây giờ các bạn copy đoạn code bên dưới để test.

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(900, 500), "SFML-Tutorial", sf::Style::Close);
    window.setFramerateLimit(60);

    sf::RectangleShape rectang(sf::Vector2f(400, 220));

    rectang.setPosition(250, 140);
    rectang.setFillColor(sf::Color::Yellow);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::EventType::Closed)
            {
                window.close();
            }
        }

        window.clear();

        window.draw(rectang);

        window.display();
    }

    return 0;
}

Sau đó các bạn hãy build.
alt text
Như thế là đã thành công. Bây giờ các bạn hãy vào đường dẫn mà nó hiển thị trong Output để tìm file exe đã build.
Tuy nhiên lúc này, nếu các bạn mở lên thì sẽ bị lỗi thiếu các file dll.
alt text
Để khắc phục, các bạn vào thư mục bin của SFML để tìm các file dll bị thiếu và paste vào. Sau đó hãy run lần nữa để thử lại.
alt text

Đó là các cài đặt SFML cho project Visual Studio ở dạng dynamic linker. Ở dạng dynamic linker thì chương trình của các bạn sẽ phải cần các file dll để chạy. Nếu các bạn không thích sự phiền hà đó thì có thể cài đặt ở dạng static. Lúc này thì chương trình của các bạn sẽ không cần các file dll của SFML (vẫn cần file openal32.dll) nhưng chương trình của các bạn sẽ nặng hơn rất nhiều :laughing:.

4. Cài đặt SFML dạng static linker

Các bước thì vẫn giống như trên. Chỉ có thêm 1 bước và khác bước add các file lib tại mục Additional Dependencies.

  • Các bạn mở chọn C++ ---> Preprocessor --> Preprocessor Definitions ---> Edit alt text
  • Các bạn gõ thêm dòng SFML_STATIC (làm cả Debug lẫn Release nhé). alt text
  • Sau đó các bạn đến mục Linker ---> Input ---> Additional Dependencies ---> Edit.
  • Ở Debug, các bạn thêm như sau. Chú ý là phải đúng thứ tự.
sfml-graphics-s-d.lib
sfml-window-s-d.lib
sfml-audio-s-d.lib
sfml-network-s-d.lib
sfml-system-s-d.lib
opengl32.lib
freetype.lib
winmm.lib
gdi32.lib
openal32.lib
flac.lib
vorbisenc.lib
vorbisfile.lib
vorbis.lib
ogg.lib
ws2_32.lib
  • Ở Release, các bạn thêm như sau. Chú ý như trên :laughing:.
sfml-graphics-s.lib
sfml-window-s.lib
sfml-audio-s.lib
sfml-network-s.lib
sfml-system-s.lib
opengl32.lib
freetype.lib
winmm.lib
gdi32.lib
openal32.lib
flac.lib
vorbisenc.lib
vorbisfile.lib
vorbis.lib
ogg.lib
ws2_32.lib

Sau đó các bạn nhấn OK để hoàn tất, rồi run và tận hưởng :laughing:

OK, bài viết đến đây là hết rồi. Mình sẽ viết về cài đặt SFML cho Codeblocks trên Windows vào Phần 2.

Các bạn cứ bình luận để bày tỏ ý kiến về bài viết cho mình nhé!! Bye :smile:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Harding Adonis

6 bài viết.
16 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
2 0
Bài viết này mình chỉ nói sơ lược về SFML và vài project mình đã làm với nó thôi nhé. Các bài viết sau mình sẽ chỉ rõ cách cài đặt cũng như dùng SF...
Harding Adonis viết 7 tháng trước
2 0
White
1 2
OK, xin chào mọi người, ở bài viết trước mình đã hướng dẫn các bạn cài SFML cho project Visual Studio. Và bây giờ, mình sẽ hướng dẫn các bạn cài đặ...
Harding Adonis viết 7 tháng trước
1 2
White
1 0
OK, xin chào mọi người, ở bài viết trước mình đã hướng dẫn các bạn cài SFML cho project Codeblocks trên Windows. Và bây giờ, mình sẽ hướng dẫn các ...
Harding Adonis viết 7 tháng trước
1 0
Bài viết liên quan
Male avatar
0 0
Constructor của lớp cha luôn được gọi trước constructor của lớp con. class Foo { public: Foo() { cout << "Base class initializing" << endl; ...
phqb viết hơn 2 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
6 bài viết.
16 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!