scons on windows その6(独自Toolの定義)
カスタムのツールを定義するには、pythonスクリプトを所定の位置に置いてexistsとgenerateの2つの関数を定義すればいい。
$HOME/.scons/site_scons/site_tools/msvc10.py
import os vs_path='C:\\Program Files (x86)\\Microsoft Visual Studio 10.0' vc_path=vs_path+'\\VC' sdk_path='C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1' def exists(env): return os.path.exists(vs_path) def generate(env): env['ENV']['PATH']=';'.join([ vc_path+'\\BIN', vs_path+'\\Common7\\IDE', ]) env['ENV']['INCLUDE']=';'.join([ vc_path+'\\INCLUDE', sdk_path+'\\include', ]) env['ENV']['LIB']=';'.join([ vc_path+'\\LIB', sdk_path+'\\Lib', ]) env.Tool('msvc')
環境変数を設定してから本家のmsvcを呼ぶ
$HOME/.scons/site_scons/site_tools/msvc10_64.py
import os vs_path='C:\\Program Files (x86)\\Microsoft Visual Studio 10.0' vc_path=vs_path+'\\VC' sdk_path='C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1' def exists(env): return os.path.exists(vs_path+'\\BIN\\x86_amd64') def generate(env): env['ENV']['PATH']=';'.join([ vc_path+'\\BIN\\x86_amd64', # 64bit vs_path+'\\Common7\\IDE', ]) env['ENV']['INCLUDE']=';'.join([ vc_path+'\\INCLUDE', sdk_path+'\\include', ]) env['ENV']['LIB']=';'.join([ vc_path+'\\LIB\\amd64', # 64bit sdk_path+'\\Lib\\x64', # 64bit ]) env.Tool('msvc')
使い方
SConstruct
env=Environment(tools=['default', 'msvc10_64']) env.SharedLibrary('zlib', Split(''' adler32.c compress.c crc32.c deflate.c gzclose.c gzlib.c gzread.c gzwrite.c infback.c inffast.c inflate.c inftrees.c trees.c uncompr.c zutil.c '''))