C++と色々

主にC++やプログラムに関する記事を投稿します。

CMake + nmake プロジェクト

概要

CMake + nmake(MSVC) + VSCode + DirectXのプロジェクトサンプルを作ってみた

github.com

理由

今日、VSCodeで色んな言語のプラグインが出ておりVSCodeで色んな言語の開発ができるようになってきている。例えばTypeScript/JavaScriptは言わずもがな、Java, Scala, C#, Ruby, Python, Go, Rustなどなど… 言語ごとにIDEを変えるのは操作を覚え直して大変だし、VSCodeはエディタとして快適なので、あらゆる開発環境をVSCodeにまとめたいと思った。そこでVisual StudioからVSCodeに引っ越ししてみようと思い立ったのでした。

構成

汎用的なCMakeプロジェクトは以前作ったことがあって、WindowsでもLinuxでも動くようなものは作ったことがある。今回はVisual Studioからの移行ということでWindowsに特化して見ようと思った。僕はDirectXを書きたい人なので、VSCodeDirectXのプロジェクトを簡単にビルド&実行できるところまでをゴールとした。WindowsのCMakeはデフォルトのジェネレーターにVisual Studioを指定している。ビルドするために一々Visual Stuidoを起動するのではVSCodeだけで完結しているとは言えないため何らかのCLI環境でビルドしたいと思った。というわけでジェネレーターの中だとnmakeが丁度良かった。

setup.batでvcvars64.batを実行しパスを通し、buildディレクトリをクリーンして、build.batを呼び出す。build.batはcmakeを実行してnmakeを実行してエラーがなければ実行ファイルを呼ぶようにしている。

今後

Debug, Releaseごとのオプションが甘かったり、まだまだ指定してないオプションがあると思ってるし、もっと汎用的なbatやCMakeLists.txtは書けると思う。今後の課題にする。

また、今後Visual Studioを使わないかと言うとそんなことはなくて、並列処理のデバッグDirectXのグラフィックスのデバッグや、Just My Code、やWatchの表示などなどデバッグに関してはVisual Studioはかなり優秀なので、簡単なデバッグならVSCodeのままでも良いんですけど、複雑なデバッグがしたくなったときはジェネレーターにVisual Studioを指定してslnファイルを生成してVisual Studioデバッグすると思います。