CMake導入中

Autotoolsのスクリプトを書くのが大変なので、CMakeを導入してみた。
とりあえず、boost::asioの練習ついでにhttpクライアントとTCPサーバーをCMakeでビルド。
単純にビルドするだけなら、
/CMakeLists.txt


CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(AsioTest)
#Boostディレクトリの設定
IF(WIN32 AND NOT UNIX)
	SET(BOOST_INCLUDEDIR C:/MinGW32/msys/1.0/local/include)
	SET(BOOST_LIBRARYDIR C:/MinGW32/msys/1.0/local/lib)
ELSE(WIN32 AND NOT UNIX)
ENDIF(WIN32 AND NOT UNIX)
#boost::systemの捜索
FIND_PACKAGE(Boost COMPONENTS system REQUIRED)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
#サブディレクトリの設定
ADD_SUBDIRECTORY(httpClient)
ADD_SUBDIRECTORY(server)

/httpClient/CMakeLists.txt


ADD_EXECUTABLE(http src/main.cpp)
TARGET_LINK_LIBRARIES(http ${Boost_LIBRARIES})
IF(WIN32 AND NOT UNIX)
#Windowsの場合は、winsock2とmswsockが必要
find_library(WS2_32_LIBRARY ws2_32)
TARGET_LINK_LIBRARIES(http ${WS2_32_LIBRARY})
find_library(MSWSOCK_LIBRARY mswsock)
TARGET_LINK_LIBRARIES(http ${MSWSOCK_LIBRARY})
ELSE(WIN32 AND NOT UNIX)
#Linux系はpthreadが必要
	find_library(PTHREAD_LIBRARY pthread)
	TARGET_LINK_LIBRARIES(http ${PTHREAD_LIBRARY})
endif(WIN32 AND NOT UNIX)

/server/CMakeLists.txt


ADD_EXECUTABLE(server src/main.cpp src/server.cpp src/user.cpp)
TARGET_LINK_LIBRARIES(server ${Boost_LIBRARIES})
IF(WIN32 AND NOT UNIX)
#Windowsの場合は、winsock2とmswsockが必要
	FIND_LIBRARY(WS2_32_LIBRARY ws2_32)
	TARGET_LINK_LIBRARIES(server ${WS2_32_LIBRARY})
	FIND_LIBRARY(MSWSOCK_LIBRARY mswsock)
	TARGET_LINK_LIBRARIES(server ${MSWSOCK_LIBRARY})
ELSE(WIN32 AND NOT UNIX)
#Linux系はpthreadが必要
	FIND_LIBRARY(PTHREAD_LIBRARY pthread)
	TARGET_LINK_LIBRARIES(server ${PTHREAD_LIBRARY})
ENDIF(WIN32 AND NOT UNIX)

これだけ。
boost::asioを要求するため、FIND_PACKAGEでパッケージ探したり、boost::asioが要求するライブラリがOSごとに違っているけど、そこはIFで分岐してFIND_LIBRARYで探してやればOK。
cygwinだけ何かしたい場合は、「IF (CYGWIN)~ENDIF(CYGWIN)」でいいっぽい。
設定次第ではインストーラーも作れるみたい。
こっちはちょっとややこしいけど、WindowsならNSISが、Linux系ならDEBが作れるらしい。
ビルドするときに、/buildを作って、cd。cmake ..ってやると、オブジェクトファイルもリンク済みバイナリも/build以下にできるから、

SET(CPACK_SOURCE_IGNORE_FILES  "/build/" "/.svn/" "/.deps/" "/.settings/" ".cproject" ".project")

でパック指定から外してやれば、make package-sourceでソースパッケージを作っても、余計なものが入らなくて便利。
公式のWin32バイナリは-Gで指定しないとVisual Studioのslnを出力しようとするから、MSYSでビルドしたければ、-G”MSYS Makefiles”がいるのに注意。
CMakeLists.txtを書くのなら、vimかEclipse + CMakeEdが便利。

富士急ハイランド行ってきた

2日前だけど
先週雪でほとんどのアトラクションが運休していたので、今日友人Kを連れてリベンジ。
朝に新宿駅で集合して、ホリデー快速河口湖号で富士急ハイランド駅へ。
富士急行線内富士山駅まで後ろ3両ドアが開かないみたい。指定席は最後尾の1号車なのに…
富士急ハイランド駅に10時頃に到着。この時点では、すべてのアトラクションが運転中。
フリーパス(5000円)買って入場。何故か最初に写真撮影。
ええじゃないかに並ぼうとするも、2時間待ちとのことで中断。FUJIYAMAの列に並ぶ。
…雨降ってきた。2時間弱運休に怯えながらなんとか乗車。この時点で若干氷混じり。最高速度130km/hで走行中に正面から氷がぶつかるから痛い。しかも曇ってて富士山見えない…
FUJIYAMA完走後、さすがに雨がひどくなってたからか、ほとんどの絶叫アトラクションが運休。
ちょっと遠くのマック行って帰ってくる頃には高飛車が運転再開してたから2時間並んで乗車。
こっちは1kmのコースを上へ下へ右へ左へ揺さぶられまくりながら完走。目玉の120°降下は手前で停止してから落下。ただまぁ…停止中に覚悟できちゃうんだよなぁ…おまけに富士山見えないし…
高飛車が終わった頃にドドンパが運転再開に向けて試運転してたけど、時間的にきついんでスルー。エヴァのブースとガンダムのブースを回って普通電車で帰宅。
ガンダムのアトラクションあれムリゲーwww1日やって多い日でクリア10~20人程度って難易度高すぎるだろwww
そのうち乗れなかった乗りに行こう。

河口湖行ってきた

2月29日に富士急行に元205系の6000系が導入されたから、写真取りに大月へ。
ついでに富士急ハイランドであそぼうかと思ったが、生憎の雪でアトラクション運休…orzしかも雪がすごくてあまりまともに撮れなかった…
朝、八王子から普通電車で高尾に移動し、高尾から115系スカ色に乗車。よく見たら先頭3両は河口湖行きだったので、相模湖駅で前に行こうとしたら、スマホ落としたorz
駅員さん呼びに行ってるまに電車は発車。しょうがないから後続の115系長野色で大月へ。大月で切符買ってホームヘ。ちょうど6000系が来てたから雪の中撮影。
その後、三つ峠で下車。撮影地に向かって徒歩で移動開始。浅間神社で雨宿りしつつ、列車待ち。
数本撮ったあと、寿駅に向かって移動しつつ、撮影地点の確認。寿で6000系撮影の後、トーマスランド号で下吉田駅へ。下吉田ではスハネフ14が静態保存されているので、乗車。少ししてからSHIMOYOSHIDA CLUBでさくら茶を飲んで下り電車で富士山駅へ。
富士山駅でマック食いに行こうとしたら、実は隣の富士急ハイランドのほうが近いことに気づかずに移動したため、結局1区間歩き通したうえにちょっと迷った。
なんとか富士急ハイランド駅についたら、ちょうどフジサン特急が来たので、河口湖へ。河口湖でモ1号撮ったら、フジサン特急で帰路についた。
その帰り道、手元の割といい加減なダイヤグラムだと谷村町駅の手前で6000系とすれ違うみたいなことになってたんだけど、谷村町駅周辺は単線。てっきり到着時間入れなかったせいで誤差が出てるんだとおもいきや、特急が停止寸前まで減速して6000系の入線と、ポイントの切替を待ってた…いっそ止まれよ。
大月からかいじに乗り換えて更に乗り換えて帰宅。今度はもっと天気のいい日に来よう…