瀏覽代碼

Remove gen from emitted files to solve circular dependency with build_library=no.

Use env variable to pass the output dir instead.
Add a CI step to guard regression on this. Clean the generated sources to avoid interfering with next steps.
Emilien Bauer 2 年之前
父節點
當前提交
e52d4b6486
共有 2 個文件被更改,包括 9 次插入3 次删除
  1. 5 0
      .github/workflows/ci.yml
  2. 4 3
      binding_generator.py

+ 5 - 0
.github/workflows/ci.yml

@@ -105,6 +105,11 @@ jobs:
         if: ${{ matrix.platform == 'windows' && matrix.flags == 'use_mingw=yes' }}
         uses: egor-tensin/setup-mingw@v2
 
+      - name: Generate godot-cpp sources only
+        run: |
+          scons platform=${{ matrix.platform }} build_library=no ${{ matrix.flags }}
+          scons -c
+
       - name: Build godot-cpp (debug)
         run: |
           scons platform=${{ matrix.platform }} target=template_debug ${{ matrix.flags }}

+ 4 - 3
binding_generator.py

@@ -141,8 +141,9 @@ def print_file_list(api_filepath, output_dir, headers=False, sources=False):
 
 def scons_emit_files(target, source, env):
     files = [env.File(f) for f in get_file_list(str(source[0]), target[0].abspath, True, True)]
-    env.Clean(files, target)
-    return [target[0]] + files, source
+    env.Clean(target, files)
+    env["godot_cpp_gen_dir"] = target[0].abspath
+    return files, source
 
 
 def scons_generate_bindings(target, source, env):
@@ -151,7 +152,7 @@ def scons_generate_bindings(target, source, env):
         env["generate_template_get_node"],
         "32" if "32" in env["arch"] else "64",
         "double" if (env["float"] == "64") else "float",
-        target[0].abspath,
+        env["godot_cpp_gen_dir"],
     )
     return None