LoginSignup
2
2

More than 5 years have passed since last update.

OSX SFMLをビルドして使うまでの話

Posted at

※注:解決した後に思い出しながら書いている為、不正確な所があるかもしれないです

環境

ProductName:    Mac OS X
ProductVersion: 10.11.3
BuildVersion:   15D21
cmake: 3.3.0
clang:Apple LLVM version 7.0.2 (clang-700.1.81)

対象者

  • SFMLを使おうかなーと思っている人

事始め

とりあえずgithubからSFMLをDLしてこよう

git clone https://github.com/SFML/SFML.git

ビルドする

cd ./SFML
cmake . -G 'Unix Makefiles' \
      -DCMAKE_OSX_ARCHITECTURES='i386;x86_64' \
      -DCMAKE_CXX_COMPILER='/usr/bin/clang++' \
      -DCMAKE_C_COMPILER='/usr/bin/clang' \
      -DSFML_BUILD_FRAMEWORKS='ON' \
      -DSFML_INSTALL_XCODE4_TEMPLATES='ON' \
      -DCMAKE_CXX_FLAGS='-stdlib=libc++' \
      -DCMAKE_C_FLAGS='-stdlib=libc++'
make -j4 #もしfreetype関係でエラーが出た場合は次の項を参照の事
sudo make install

freetypeがねーよ!

どうもfreetypeが存在しない場合があるようですねー
困ります、困ります

brew install freetype
ln -s /usr/local/Cellar/freetype/2.6.3/include/freetype2/freetype/ /usr/local/include/freetype

とりあえず includeディレクトリから見て、 /freetype/config/ftheader.h となるようにシンボリックリンクを作ると解決する。

とりあえず動かしてみる

公式にチュートリアルがありますんで参考にしよう
http://www.sfml-dev.org/tutorials/2.1/start-linux.php

CMakeで使う

cmake_minimum_required (VERSION 2.6)


SET(PROJECT_NAME ProjectName)
# コンパイラ
SET(CMAKE_C_COMPILER clang)
SET(CMAKE_CXX_COMPILER clang++)
# リリースビルド用オプション
SET(CMAKE_CXX_FLAGS_RELEASE "-Wall -O2")
# デバッグビルド用オプション
SET(CMAKE_CXX_FLAGS_DEBUG "-Wall -g -O0")
# ビルドの基本フラグ
SET(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ ${CMAKE_CXX_FLAGS}")
# ビルドのタイプ
SET(CMAKE_BUILD_TYPE Debug)
# ext type
SET(PUTTYPE ".out")
# バージョン
SET(serial "0.0.1")

SET(MAIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp")

PROJECT(${PROJECT_NAME}${PUTTYPE})

ADD_EXECUTABLE(${PROJECT_NAME} ${SOURCES} ${MAIN_SOURCES})

find_package(SFML 2 COMPONENTS system window graphics audio REQUIRED)

# includes
include_directories(${PROJECT_NAME} ${SFML_INCLUDE_DIR})

# target link
target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES}) 

cmake .
make
./ProjectName.out

Moduleがないんですけど!って言われた場合

そもそも、cmakeは、find_packageの時に、cmake/modulesディレクトリの
FindHoge.cmakeファイルを見て、パッケージがあるかないか判断しているっぽい(適当)

SFMLの場合は、FindSFML.cmakeファイルが
SFML/cmake/Modules
に存在しているみたいなんで、上記ディレクトリの中身のcmakeファイルを
/usr/local/Cellar/cmake/3.3.0/share/cmake/modules
へコピーすると、Moduleは見つかり、動作するようになる。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2