SFML(Simple and Fast Multimedia Library)이란?

 SFML은 게임 개발과 UI 환경의 어플리케이션을 간단하게 제작할 수 있게 간단한 인터페이스를 제공하며, C++ 언어를 사용한다.

SFML은 시스템, 윈도우, 그래픽, 오디오, 네트워크인 다섯가지의 구성요소를 가진다.

지원되는 OS는 Windows, Linux, macOS 그리고 Android & iOS(한정적으로 지원)에서 컴파일하고, 실행해볼 수 있다.


설치 방법은 아래와 같다.

아래 링크로 이동하면, SFML을 다운받을 수 있는 페이지가 나오게 된다.

https://www.sfml-dev.org/download.php

가장 최신 버전을 사용하는 것이 좋으며, 개발 환경을 이전 버전으로 맞추고 진행하는 경우는 'Order versions'에서 사용하고 있는 이전 버전으로 다운로드 하면 된다.

다운로드하게 되면 압축파일 형태로 받게 된다.

1) Windows 에서 환경설정

SFML 홈페이지 내에 환경 설정하는 방법이 영어로 나와 있습니다.

Windows의 경우 Visual Studio를 주로 이용하여 아래 링크에 나온 내용으로 차근차근 진행하면 환경 설정 완료할 수 있습니다. (중요 부분은 경로와 그림으로 나와 있어 설정하는데에 무리는 없을 거 같습니다.)

https://www.sfml-dev.org/tutorials/2.6/start-vc.php

아래 전북대학교 김형기 강사님의 강의 내용으로 환경설정하도록 하며, 해당 강의를 시청하여 SFML 사용방법을 익히는 것을 추천합니다.

https://www.youtube.com/watch?v=ibMSDw816-A&list=PLMcUoebWMS1nzhlx-NbD4KBGEP1UCUDF_&index=2

2) Mac에서 환경설정

SFML 홈페이지 내에 환경 설정하는 방법이 영어로 나와 있습니다.

Mac의 경우는 Xcode를 사용하기 때문에 아래 링크에 나온 내용으로 차근차근 진행하면 환경 설정 완료할 수 있습니다.

https://www.sfml-dev.org/tutorials/2.6/start-osx.php

Mac에서는 압축해제 후에 SFML 파일을 특정 경로에 복사하여 SFML을 설치합니다.

1) SFML 압축 푼 폴더에서 'Framework' 폴더에 있는 파일 및 폴더를 Mac의 '~/Library/Frameworks' 폴더로 복사합니다.

2) SFML 압축 푼 폴더에서 'extlibs' 폴더에 있는 파일 및 폴더를 Mac의 '~/Library/Frameworks' 폴더로 복사합니다.

3) SFML 압축 푼 폴더에서 'lib' 폴더에 있는 파일 및 폴더를 '~/usr/local/lib' 폴더로 복사해야 하는데 해당 폴더가 숨김 폴더라 나오지 않는데 'Command + . + Shift'를 동시에 누르면 숨겨져 있던 'usr'폴더가 나옵니다.

4) SFML 압축 푼 폴더에서 'include' 폴더에 있는 파일 및 폴더를 '~/usr/local/include' 폴더로 복사합니다.

(숨김 파일이라 안 보이는데 'Command + . + Shift'를 동시에 눌러 숨겨진 'usr' 폴더가 나옵니다.

5) SFML 압축 푼 폴더에서 'templates' 폴더에 있는 파일 및 폴더를 '~/Library/Developer/Xcode/Templates' 폴더에 복사하는데 없다면 해당 경로를 만들어서 복사해줍니다.

6) Xcode를 실행하여 새 프로젝트 생성하여 'macOS' 탭을 누르면 제대로 설치되었다면 아래와 같은 화면이 나옵니다.





 



7) SFML App으로 프로젝트 생성 시에 기본 샘플코드가 작성된 프로젝트를 생성합니다.

8) 샘플 코드 실행 시에 수행이 안되고 에러가 발생하게 됩니다. 그럴 때는 아래와 같이 설정합니다.

(1) 프로젝트에서 'Build Phases' 탭을 클릭합니다.

(2) 항목 중에 'Run Script' 항목을 클릭합니다.

(3) 'Run Script' 항목에서 아래와 같이 체크해줍니다.





9) 위 진행 후에 다시 실행하게 되면, '개발자를 확인할 수 없기 때문에 sfml-system.framework를 열 수 없습니다.' 이런 메시지가 생성되는 경우가 있습니다.

이런 경우 압축해제한 SFML 폴더에서 'Frameworks', 'extlib' 폴더 내의 파일 및 폴더를 '~/Library/Frameworks' 폴더에 복사해서 설치했지만, 보안 상의 이유로 실행하지 않게 막고 있어 실행이 되지 않습니다.

이럴 때는 SFML 폴더에 '~/Library/Frameworks' 폴더로 복사한 파일 및 폴더를 신뢰하는 경로로 추가하기 위해서 터미널에서 아래와 같이 처리합니다.

(1) 터미널을 켜서 '~/Library/Frameworks' 폴더로 이동합니다.

(2) SFML 폴더에 복사한 파일 및 폴더를 'sudo xattr -rd com.apple.quarantine 파일 또는 폴더' 명령어로 신뢰하는 경로로 추가합니다.

 -> sudo xattr -rd com.apple.quarantine sfml-system.framework

 -> sudo xattr -rd com.apple.quarantine sfml-window.framework 

 -> sudo xattr -rd com.apple.quarantine sfml-graphics.framework

 -> sudo xattr -rd com.apple.quarantine sfml-audio.framework

 -> sudo xattr -rd com.apple.quarantine sfml-network.framework

 -> sudo xattr -rd com.apple.quarantine SFML.framework

 -> sudo xattr -rd com.apple.quarantine FLAC.framework

 -> sudo xattr -rd com.apple.quarantine freetype.framework

 -> sudo xattr -rd com.apple.quarantine ogg.framework

 -> sudo xattr -rd com.apple.quarantine OpenAL.framework

 -> sudo xattr -rd com.apple.quarantine vorbis.framework

 -> sudo xattr -rd com.apple.quarantine vorbisenc.framework

 -> sudo xattr -rd com.apple.quarantine vorbisfile.framework

위 명령어 수행 후에 실행되면 샘플 프로젝트의 결과를 출력합니다.