Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake 対応 #12

Open
m-tmatma opened this issue May 28, 2018 · 13 comments
Open

cmake 対応 #12

m-tmatma opened this issue May 28, 2018 · 13 comments

Comments

@m-tmatma
Copy link
Member

cmake の導入に関してどう思いますか?

cmake は、マルチプラットフォームのビルドツール(正確にはビルド用のプロジェクト生成ツール)です。
CMakeLists.txt というテキストファイルにビルド設定を記述します。

CMakeLists.txt が置かれているトップディレクトリを指定して実行することにより
各種ビルドツールで使用できるプロジェクトファイルを生成できます。
(Visual Studio, Ninja, Makefile など)

単体テストの GoogleTest も使用している他、XCode でのコンパイルに
使用されている clang/llvm でもビルドに使用されています。

cmake を使うことのメリットは、
複数のバージョンの Visual Studio に容易に対応できたり複数のコンパイラに対応できることです。GitHub 上で Sakura Editor のMinGW-W64 対応を行っている方がおられるようですが、
このようなニーズにも対応できると思います。

32bit バージョンと64bitバージョンのビルドをするときもメンテする労力も少ないです。

デメリットは
CMake の使い方を覚える学習コストがかかり、実運用できるまでに時間がかかることと
日本語の情報がすくないことです。

@kobake
Copy link
Member

kobake commented May 28, 2018

興味深いところではあります。

ゼロベースで学習して云々というよりは、既に cmake 詳しい方からの PR が来ればそのときに慎重にレビューを進めたい、というくらいの温度感です。

他のビルドシステムとの衝突が無ければ良いな〜〜と、そのあたりが懸念のひとつではあります。

@m-tmatma
Copy link
Member Author

まだビルドに成功してませんが

ローカルで調査してます。

@m-tmatma
Copy link
Member Author

動けば、プルリクエスト投げます。

@m-tmatma
Copy link
Member Author

参考情報です。

英語ですが
https://www.packtpub.com/application-development/cmake-cookbook
という本が出版される予定です

@m-tmatma
Copy link
Member Author

m-tmatma commented Jun 3, 2018

#46 で cmake によるビルドができるようになりました。

@m-tmatma
Copy link
Member Author

m-tmatma commented Jun 3, 2018

32bit バージョンと64bitバージョンのビルドをするときもメンテする労力も少ないです。

32bit OS で 64bit 版のクロスコンパイルをするのは少し調査が必要です。

@kobake
Copy link
Member

kobake commented Jun 4, 2018

cmake を使うことのメリットは、
複数のバージョンの Visual Studio に容易に対応できたり複数のコンパイラに対応できることです。GitHub 上で Sakura Editor のMinGW-W64 対応を行っている方がおられるようですが、
このようなニーズにも対応できると思います。

32bit バージョンと64bitバージョンのビルドをするときもメンテする労力も少ないです。

今更なんですけど、これは Visual Studio の既存機構だと難しい(?)という認識ですか?

@kobake
Copy link
Member

kobake commented Jun 4, 2018

別件ですけど、cmake とは別の話ですが .sln とは別に Makefile が用意されている理由も実はよく分かってなかったりします……

@m-tmatma
Copy link
Member Author

m-tmatma commented Jun 4, 2018

今更なんですけど、これは Visual Studio の既存機構だと難しい(?)という認識ですか?

CMake を使うと、いろんなことができるので、Visual Studio の既存のプロジェクトを置き換える形で使いたいと思っています。

  • 単体テストの GoogleTest を導入する
    • GoogleTest の最新版では 通常の VC のプロジェクトはメンテされず CMake のみサポートされる
  • ビルドプロセスの中で Installer もビルドする
  • 全く別のコンパイラを導入する

など

@berryzplus
Copy link
Contributor

CMakeの可能性については、期待感をもって見ています。
1つだけ懸念があったのでこれまで特にコメントしてきませんでした。

懸念は、本流のsln+vcxprojを置き換えるつもりで動いてやしないか?ってことでした。
本流の置き換えには 少なくとも現時点では 賛同できないです。
MinGW向けのMakefile生成をCMakeで置き換えるのには賛成です。

Visual Studioの開発チームもCMakeを意識していて、
vs2017にはCMakeベースのプロジェクトを読み込む機能もあるらしいです。
もしかしたらプロジェクトをCMakeプロジェクトに変換する機能もあるかも知れません。
賛同できない理由は、こうした時流とは関係ありません。

C++のコードは、開発環境によってできることや書き方が変わります。
どんなビルド環境でも正しく動くようなコードを書くのは、実はかなり難しいです。
無理やり書こうとすると#defineマクロと#if文だらけの読みづらいコードになります。
マクロを使わないやり方もありますが「分かりやすい」からは離れたコードになります。

開発環境を可変にする、ということは開発難度を上げることにつながると思っています。
むしろ、開発難度を下げる方向で出来ることがないか探していたところでした。
今の段階から様々な環境に向けた場合分けコードが入り始めるのは厳しいなぁ、と思っています。

マルチOS対応に向けて考えていることがいくつかあるんですが、
少なくともそれが終わるまでは開発環境を固定しておきたいです。
もっとも、マルチOS対応を考える前にやるべきこともたくさんあるのですが。

@m-tmatma
Copy link
Member Author

m-tmatma commented Jun 4, 2018

懸念は、本流のsln+vcxprojを置き換えるつもりで動いてやしないか?ってことでした。
本流の置き換えには 少なくとも現時点では 賛同できないです。

すぐに置き換えるのは考えていないです。
"実験" 的な機能として考えています。

十分長い間、既存の visual studio のソリューションと共存させるつもりです。

@berryzplus
Copy link
Contributor

既存Makefileの置き換えなど、ある意味すぐに適用できるものもあると思っています。

本流の置き換えは並存期間だけの問題ではないので、慎重に見極めたいです。

@m-tmatma
Copy link
Member Author

英語ですが
https://www.packtpub.com/application-development/cmake-cookbook
という本が出版される予定です

もともと 2018/02 に出版される予定だったが、
遅れに遅れて9月末にリリースされるという連絡があった。

今なら $10 です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants