python製のビルドツールgypを使ってみる gyp(Generate Your Projects) は、 pythonで記述されたプロジェクト生成ツールで設定からVC向けプロジェクトや、GCC向けMakefileを生成するツールである。 chromeやnode.jsのビルドツールとして採用されているそうな。 機能的にはpremake4やcmakeと同じ範囲をカバーするがそれぞれ以下のような問題があった。

premake4はわりと気に入っているのだが布教困難。luaで宣言的に記述するのが分かりづらい cmakeはcmake語が解読不能でちょっとしたプロジェクトのカスタマイズが困難すぎる(OpenCVとかのことだ)

そこで、python製のgypを試してみた。 gyp導入 環境は、Windows7 + python3。

unknown: blockquote => {"type":"blockquote","children":[{"type":"paragraph","children":[{"type":"text","value":"python setup.py install\n:\n中略\n:\nSyntaxError: invalid syntax","position":{"start":{"line":14,"column":3,"offset":370},"end":{"line":18,"column":28,"offset":428}}}],"position":{"start":{"line":14,"column":3,"offset":370},"end":{"line":18,"column":28,"offset":428}}}],"position":{"start":{"line":14,"column":1,"offset":368},"end":{"line":18,"column":28,"offset":428}}}

File "c:\python33\lib\site-packages\gyp-0.1-py3.3.egg\gyp\generator\ninja.py", line 475 print "Warning: Actions/rules writing object files don't work with "

unknown: break => {"type":"break","position":{"start":{"line":22,"column":74,"offset":594},"end":{"line":23,"column":1,"offset":596}}}
^ SyntaxError: invalid syntax

File "c:\python33\lib\site-packages\gyp-0.1-py3.3.egg\gyp\generator\xcode.py", line 126 except OSError, e: ^ SyntaxError: invalid syntax

python3非対応だった。まぁpython2で。 とりあえずc++の”hello world”をビルドするところから hello_gyp + main.cpp + projects.gyp

main.cpp projects.gyp プロジェクト生成。

unknown: blockquote => {"type":"blockquote","children":[{"type":"paragraph","children":[{"type":"text","value":"gyp projects.gyp --depth .","position":{"start":{"line":41,"column":3,"offset":1000},"end":{"line":41,"column":29,"offset":1026}}}],"position":{"start":{"line":41,"column":3,"offset":1000},"end":{"line":41,"column":29,"offset":1026}}}],"position":{"start":{"line":41,"column":1,"offset":998},"end":{"line":41,"column":29,"offset":1026}}}

これで、projects.slnとhello_gyp.vcxprojが生成された。 hello_gyp + main.cpp + projects.gyp + projects.sln(generated) + hello_gyp.vcxproj(generated)

vc2010 express editionでprojects.slnを開いてビルドできた。 hello_gyp + main.cpp + projects.gyp + projects.sln + hello_gyp.vcxproj + Default/hello_gyp.exe(build)

構成がDebug, ReleaseではなくDefault一本立てなのでカスタマイズの必要あり。