编译godot 的GDNative 库
如果没有安装python就先安装python,再安装scons.
设置系统环境变量PATH. 增加E:\Python\Scripts 路径 (因为scons安装后在这个目录里).
(1):如果你想在scons里指定INCLUDE与LIB 自定义路径,可以通过修改scons源码实现,找到E:\Python\Lib\site-packages\scons-3.0.0\SCons\Script\Main.py, 在def main(): 函数的开头里增加以下代码.
LIBS=['user32','kernel32','uuid','ws2_32','winmm','ole32'];
LIBPATH=['E:/Microsoft Visual Studio 12.0/VC/Tools/MSVC/lib/x64','E:/Microsoft Visual Studio 12.0/VC/Windows Kits/7.1A/Lib/x64'];
CCFLAGS = ' /D "UNICODE" /D "WIN32" /D "_UNICODE" ';
SCons.Defaults.DefaultEnvironment(LIBS=LIBS,LIBPATH=LIBPATH,CCFLAGS=CCFLAGS);
(这是自定义path路径,就是你vc12里的cl.exe路径)
(2):然后在E:\Python\Lib\site-packages\scons-3.0.0\SCons\Platform\win32.py 的def generate(env): 函数
把env.AppendENVPath('PATH', get_system_root() + '\System32') 注释掉替换以下代码:
myvs_home="E:\\Microsoft Visual Studio 12.0"
garfield_path1=myvs_home+"\\VC\\Tools\\MSVC\\bin\\HostX64\\x64"
garfield_path2=myvs_home+"\\Common7\\IDE"
garfield_path3=myvs_home+"\\Common7\\Tools"
garfield_path_string=garfield_path1+';'+garfield_path2+';'+garfield_path3
env.AppendENVPath('PATH', garfield_path_string);#SCons\Environment.py
env.Append(CPPPATH=[ 'E:/Microsoft Visual Studio 12.0/VC/Tools/MSVC/include']);
(这是增加自定义的include路径)
以上两种增加自定义路径的方法是以修改scons源码实现的,这样 可以不用每个项目都改路径.
如果你不想修改源码,也可以在你项目的SConstruct 文件里修改自定义路径与包含目录.
(3):跟着就是编译gdnative库,假设你已经下载好ndnative库(分别下载:https://github.com/GodotNativeTools/godot_headers 与 https://github.com/GodotNativeTools/godot-cpp),解压为GDNative文件夹.
打开GDNative的源码目录,在空白处按shift 加右键 选择在此处打开Powershell窗口,弹出命令窗口,写入scons p=windows tagert="release" regenerate_bindings=yes VERBOSE=1 命令开始编译如下gif.
我上面是编译成debug版本,不过我发现编译成debug版本不能在godot里正常导入dll,不知什么原因,只有我编译成release版本才解决问题.
要编译成release版本我直接修改 gdnative下的SConstruct 文件 注释一行,增加一行:
#opts.Add(EnumVariable('target', 'Compilation target', 'debug', ('debug', 'release')));#■■--
opts.Add(EnumVariable('target', 'Compilation target', 'release', ('debug', 'release')));#■■++