Microsoft Visual C++ Compiler for Python 2.7 で CMakeする

(注: nmoshのビルドはできない。)
MSはPython2.7のモジュール(*.pyd)をビルドするためのSDKを配布している。

これは従来のSDKで使用されていたProgram Filesではなく、AppDataにインストールされるため、インストールに管理者権限は不要となっている。何気にMSがポータブルなWin32 SDKを配布するのは初めてな気もするが、要するにレガシーなWin32 SDKを単体動作するように.msiにパッケージしたもの。なのでGraphEditのような明らかにビルドには不要なものも含まれている。
(ちなみに、EULAは通常のMSDNのものと同じなので、開発目的にのみ使用できる。

1. INSTALLATION AND USE RIGHTS. You may install and use any number of copies of the software on your devices to design, develop and test your programs.

pythonスクリプトを使うだけのユーザはどうなのかというのは微妙な問題だが、このEULAは別にコンパイラに通されるプログラムがyour programsであることは求めていないので、多くのケースでは問題無いと考えられる。いわゆる本番環境へのデプロイはダメだが)

CMakeで使う

基本的にはPythonのツールから使用されることを期待したパッケージだが、フルセットのSDKなので当然普通のWin32プログラムもビルドできるはず。
SDKは、C:\Users\%USERNAME%\appdata\local\Programs\Common\Microsoft\Visual C++ for Python\9.0 にインストールされるので、そこでコマンドウインドウを開き、

vcvarsall

のようにすればi386用の環境が、

vcvarsall amd64

のようにすればamd64用の環境がセットアップされ、後は普通にCMakeでnmakeなりninjaのジェネレータを使用してビルドファイルを生成することで使用できる。(あるいは、スタートメニュー"Microsoft Visual C++ Compiler Package for Python 2.7"にインストールされるショートカットを使用する)
この方法が、手でCMAKE_C_COMPILER等の変数を設定するよりもずっと簡単で確実と言える。
ちなみに、コンパイラは製品版のVisual Studio 2008と同じ 15.00.30729.01 のようだ。またこのコンパイラ日本語ロケールを含まないので、ninjaのようにVCの出力をパースするタイプのツールでは好都合と言える。Visual Studio 2008当時と異なり、1つのインストーラi386amd64の両方をサポートする。また、言うまでもなくItaniumをサポートしない。
もっとも、nmoshはこのバージョンのVCではビルドできない。当時のVCはstdint.hのような常識的なヘッダを欠いていて(C89だから)、いろいろ対策する必要が有る。

c:\repos\mosh\src\nmosh\include\nmosh/plugin-if.h(4) : fatal error C1083: Cannot
 open include file: 'stdint.h': No such file or directory
ninja: build stopped: subcommand failed.