windows2017年12月5日火曜日MSVCを使ったOSSのビルドについてC++アドベントカレンダー2017のDAY5の記事になります。かませば一括してライブラリもそれに合わせて更新されます。サイトを検索してビルド方法を試行錯誤していました。一度ビルドしてしまえば、当面ビルドの必要無いですしね?現状を振り返ってみて、気がついてみれば、結構いろんなOSSを利用していました。2005を使っていました。これを契機にOSSのビルドを自動化して時間の効率化を図ろうと決意しました。脱線しますが、自動化しようと思った動機について、もう少し書こうと思います。ひとつは、MSの提供するライブラリよりもOSSに依存した方が安全だと思った事です。C++でサポートされなくなったり、Regex系のライブラリが消えたり、Web系のC++ライブラリがサポートされなくなったり。Soapを使った独特のIDL言語を使った機構がサポートされなくなったのは、かなりの痛手です。MSのライブラリに依存することは、危険です。使いやすいからWTLでアプリを組んでいましたが、リモート・アプリケーションでのプリンタが認識できない問題で、印刷コモンダイアログを自作する羽目になりました。等を提案すると取り込んでもらえる状況なのが救いです。Regex系のライブラリが消えた時は、移植で死にそうになりました。Soapがサポートされなくなった時は、MSはC#が大切でC++なんか気にしちゃいないと実感しました。ひとつは、自社で開発している既存のソフトウェアを32bit環境から64bit環境へ移行する目論見も出てきました。移行する時にOSSライブラリを個々に調べてビルドしていたら大変です。最後は、あわよくばプルリクエストをもらって楽しよう共闘できると思ったからです。そんなプロジェクト、どこにも無いですし、それなりに価値があるのではないかと思っています。やって作成したのが、こちらbuild-oss-library-on-windowsです。自動化するにあたっては、いろいろと躓きました。IDEのプロジェクトをビルドできる事が分かりました。ところが、このIDEはバージョン依存で正しいビルドツールを指定しないとエラーでビルドできません。正しいビルドツールの番号、気が狂ってます。バージョンを判定するバッチファイルの修正履歴を見ていただければ、わかると思いますが、現実は予想の斜め上を行ってました。C++のバージョンに関する公式の表がどこにも掲載されていません。プロジェクトファイルは、それぞれのバージョンに合わせなければなりません。コマンドラインからアップグレードできるのが救いです。プラットフォームでしかビルド検証されていない状況ですが、ドキュメントを参考に是非、利用してみてください。自前で、コツコツと毎回ビルドされている方には使ってみて欲しいです。時間の節約になると思います。追記:コメント頂いた。利用した方が良さそうです。