cmakeを使った雑記

 何度か心が折れているけど、それでもテスト自動化したい。

GitLabにpushすると自動でCIが回って云々してくれるのは分かった。 一方で色々わからない。定石がわからない。

  • GitLabでテストを呼ぶ
  • GitLabに呼べるようにテストを置く
  • そもそもローカルで自動化すべきでは

 どうせ1人の開発だろうし、ローカルでも良いと思う。 仮にpublicにするとしても、GitLabでのみテストするってのは効率が良いとは思えない。 (無料かつほぼデフォルトの設定だと高速ではないような) お金を払ったり、複数人で開発するなら全然良いんだろうけど。

 大抵調べるとCIしてるプロジェクトはUnix系?かMacOSでそのまま参考にはできない。 dockerも入れてコンテナ建てるpullするくらいは分かったけど、 ここに例えばubuntu入れてcmake+clang or gcc 入れて、 そこでコード書くかホストのWindowsから渡すようなことをするのか? 面倒さは増えてるような。

 良くわからないけどシンプルなのは手元で自動化したものをそのままGitLabに上げることじゃなかろうか。 色々あるんだろうけどGitLab/GithubのCIでcmakeを使っているらしいプロジェクトがあるのは知っている。 cmakeを使ってローカルでもある程度回せないのか?

 そんなわけでcmakeを触り始めた。適当にやってわかるものではないとわかったのでtutorialをする。 現在step2/7が終わった。ソースをⅮLするとtutorialのstepごとの結果も入っているので参考にできる。 でもstepが微妙にずれているように思う。(ソースだとstepが11まである)

 とりあえずビルドの産物をbuildディレクトリに隔離できるのは楽でいい。 ディレクトリ指定の誤りや誤字で簡単にコケるし、どこが間違っていると教えてくれるとも限らないのは厳しい。 それを踏まえるとなるべく短くわかりやすく書くのがいいんだろうかこれ。

プロジェクトのディレクトリにCMakeLists.txt と buildディレクトリ作ったら下の感じで良いっぽい。

$ ...\build>cmake ..
$ ...\build>cmake --build .

--buildにたどり着くまで結構かかった。 .slnをVisualStudioで開いてビルドとかでも良い。 調べた先ではmakeしてるから Windows MSVCだとmakeは何にあたるのか調べてnmakeだとかを新しく入れるとか.dat使うとか。 色々調べてcmake --help眺めてたら見つけた。

最終的には以下になるのか?

  • 未実施だったらテスト
  • テストが通った時だけmasterにcommit

Windowsで開発するのは、今まで思っていたよりもずっと面倒で大変なことなのかもしれない。 cmake終わったら折角入れたんだからdockerも使ってみようか。 ubuntu等手軽に触れるのはいい。

参考

CMAKE によるビルド自動化とテスト実行 - zonomasaの日記

CMakeの使い方(その1) - Qiita

上記以外にもいくつか参考にしたけど、特にディレクトリ関係がわかりやすいのをいくつか。