浏览代码

Update `SConstruct` and `.gdextension` file of the godot-cpp example with newest conventions.

# Conflicts:
#	tutorials/scripting/cpp/gdextension_cpp_example.rst
Lukas Tenbrink 1 月之前
父节点
当前提交
c46a399eab
共有 2 个文件被更改,包括 34 次插入48 次删除
  1. 21 32
      tutorials/scripting/cpp/files/cpp_example/SConstruct
  2. 13 16
      tutorials/scripting/cpp/gdextension_cpp_example.rst

+ 21 - 32
tutorials/scripting/cpp/files/cpp_example/SConstruct

@@ -2,42 +2,31 @@
 import os
 import sys
 
-env = SConscript("godot-cpp/SConstruct")
+# You can find documentation for SCons and SConstruct files at:
+# https://scons.org/documentation.html
 
-# For reference:
-# - CCFLAGS are compilation flags shared between C and C++
-# - CFLAGS are for C-specific compilation flags
-# - CXXFLAGS are for C++-specific compilation flags
-# - CPPFLAGS are for pre-processor flags
-# - CPPDEFINES are for pre-processor defines
-# - LINKFLAGS are for linking flags
+# This lets SCons know that we're using godot-cpp, from the godot-cpp folder.
+env = SConscript("godot-cpp/SConstruct")
 
-# tweak this if you want to use different folders, or more folders, to store your source code in.
+# Configures the 'src' directory as a source for header files.
 env.Append(CPPPATH=["src/"])
+
+# Collects all .cpp files in the 'src' folder as compile targets.
 sources = Glob("src/*.cpp")
 
-if env["platform"] == "macos":
-    library = env.SharedLibrary(
-        "demo/bin/libgdexample.{}.{}.framework/libgdexample.{}.{}".format(
-            env["platform"], env["target"], env["platform"], env["target"]
-        ),
-        source=sources,
-    )
-elif env["platform"] == "ios":
-    if env["ios_simulator"]:
-        library = env.StaticLibrary(
-            "demo/bin/libgdexample.{}.{}.simulator.a".format(env["platform"], env["target"]),
-            source=sources,
-        )
-    else:
-        library = env.StaticLibrary(
-            "demo/bin/libgdexample.{}.{}.a".format(env["platform"], env["target"]),
-            source=sources,
-        )
-else:
-    library = env.SharedLibrary(
-        "demo/bin/libgdexample{}{}".format(env["suffix"], env["SHLIBSUFFIX"]),
-        source=sources,
-    )
+# The filename for the dynamic library for this GDExtension.
+# $SHLIBPREFIX is a platform specific prefix for the dynamic library ('lib' on Unix, '' on Windows).
+# $SHLIBSUFFIX is the platform specific suffix for the dynamic library (for example '.dll' on Windows).
+# env["suffix"] includes the build's feature tags (e.g. '.windows.template_debug.x86_64')
+# (see https://docs.godotengine.org/en/stable/tutorials/export/feature_tags.html).
+# The final path should match a path in the '.gdextension' file.
+lib_filename = "{}gdexample{}{}".format(env.subst('$SHLIBPREFIX'), env["suffix"], env.subst('$SHLIBSUFFIX'))
+
+# Creates a SCons target for the path with our sources.
+library = env.SharedLibrary(
+    "demo/bin/{}".format(lib_filename),
+    source=sources,
+)
 
+# Selects the shared library as the default target.
 Default(library)

+ 13 - 16
tutorials/scripting/cpp/gdextension_cpp_example.rst

@@ -338,18 +338,18 @@ loaded for each platform and the entry function for the module. It is called ``g
 
     [libraries]
 
-    macos.debug = "./bin/libgdexample.macos.template_debug.dylib"
-    macos.release = "./bin/libgdexample.macos.template_release.dylib"
-    windows.debug.x86_32 = "./bin/libgdexample.windows.template_debug.x86_32.dll"
-    windows.release.x86_32 = "./bin/libgdexample.windows.template_release.x86_32.dll"
-    windows.debug.x86_64 = "./bin/libgdexample.windows.template_debug.x86_64.dll"
-    windows.release.x86_64 = "./bin/libgdexample.windows.template_release.x86_64.dll"
-    linux.debug.x86_64 = "./bin/libgdexample.linux.template_debug.x86_64.so"
-    linux.release.x86_64 = "./bin/libgdexample.linux.template_release.x86_64.so"
-    linux.debug.arm64 = "./bin/libgdexample.linux.template_debug.arm64.so"
-    linux.release.arm64 = "./bin/libgdexample.linux.template_release.arm64.so"
-    linux.debug.rv64 = "./bin/libgdexample.linux.template_debug.rv64.so"
-    linux.release.rv64 = "./bin/libgdexample.linux.template_release.rv64.so"
+    macos.debug = "./libgdexample.macos.template_debug.dylib"
+    macos.release = "./libgdexample.macos.template_release.dylib"
+    windows.debug.x86_32 = "./gdexample.windows.template_debug.x86_32.dll"
+    windows.release.x86_32 = "./gdexample.windows.template_release.x86_32.dll"
+    windows.debug.x86_64 = "./gdexample.windows.template_debug.x86_64.dll"
+    windows.release.x86_64 = "./gdexample.windows.template_release.x86_64.dll"
+    linux.debug.x86_64 = "./libgdexample.linux.template_debug.x86_64.so"
+    linux.release.x86_64 = "./libgdexample.linux.template_release.x86_64.so"
+    linux.debug.arm64 = "./libgdexample.linux.template_debug.arm64.so"
+    linux.release.arm64 = "./libgdexample.linux.template_release.arm64.so"
+    linux.debug.rv64 = "./libgdexample.linux.template_debug.rv64.so"
+    linux.release.rv64 = "./libgdexample.linux.template_release.rv64.so"
 
 This file contains a ``configuration`` section that controls the entry function of the module.
 You should also set the minimum compatible Godot version with ``compatibility_minimum``,
@@ -363,10 +363,7 @@ also result in *just* that file being exported when you export the project,
 which means the data pack won't contain libraries that are incompatible with the
 target platform.
 
-Finally, the ``dependencies`` section allows you to name additional dynamic
-libraries that should be included as well. This is important when your GDExtension
-plugin implements someone else's library and requires you to supply a
-third-party dynamic library with your project.
+You can learn more about ``.gdextension`` files at :ref:`doc_gdextension_file`.
 
 Here is another overview to check the correct file structure: