From f4efa2fd8aa461fc2e3e36f955e69d9ef2f8c0bd Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 31 Mar 2023 19:29:08 +0200 Subject: [PATCH] Move rationale about Godot using SCons to Frequently asked questions This also removes an obsolete bit about the command prompt to use when compiling using Visual Studio (automatic detection has been implemented for years). --- about/faq.rst | 31 ++++++++++++- .../introduction_to_the_buildsystem.rst | 43 ++++--------------- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/about/faq.rst b/about/faq.rst index cb80a4ab8..a37fbc913 100644 --- a/about/faq.rst +++ b/about/faq.rst @@ -478,6 +478,35 @@ This custom UI toolkit :ref:`can't be used as a library `. +.. _doc_faq_why_scons: + +Why does Godot use the SCons build system? +------------------------------------------ + +Godot uses the `SCons `__ build system. There are no +plans to switch to a different build system in the near future. There are many +reasons why we have chosen SCons over other alternatives. For example: + +- Godot can be compiled for a dozen different platforms: all PC + platforms, all mobile platforms, many consoles, and WebAssembly. +- Developers often need to compile for several of the platforms **at + the same time**, or even different targets of the same platform. They + can't afford reconfiguring and rebuilding the project each time. + SCons can do this with no sweat, without breaking the builds. +- SCons will *never* break a build no matter how many changes, + configurations, additions, removals etc. +- Godot's build process is not simple. Several files are generated by + code (binders), others are parsed (shaders), and others need to offer + customization (:ref:`modules `). This requires + complex logic which is easier to write in an actual programming language (like Python) + rather than using a mostly macro-based language only meant for building. +- Godot build process makes heavy use of cross-compiling tools. Each + platform has a specific detection process, and all these must be + handled as specific cases with special code written for each. + +Please try to keep an open mind and get at least a little familiar with SCons if +you are planning to build Godot yourself. + .. _doc_faq_why_not_stl: Why does Godot not use STL (Standard Template Library)? @@ -547,7 +576,7 @@ such a case, you should consider a different approach to optimization. The vast majority of games do not need this and Godot provides handy helpers to do the job for most cases when you do. -If a game needs to process such a large amount of objects, our recommendation +If a game needs to process such a large amount of objects, our recommendation is to use C++ and GDExtensions for performance-heavy tasks and GDScript (or C#) for the rest of the game. diff --git a/contributing/development/compiling/introduction_to_the_buildsystem.rst b/contributing/development/compiling/introduction_to_the_buildsystem.rst index 8e6a623e3..cdc8802d2 100644 --- a/contributing/development/compiling/introduction_to_the_buildsystem.rst +++ b/contributing/development/compiling/introduction_to_the_buildsystem.rst @@ -5,45 +5,20 @@ Introduction to the buildsystem .. highlight:: shell -SCons ------ - -Godot uses `SCons `__ to build. We love it, we are not -changing it for anything else. We constantly get requests to move the build -system to CMake, or Visual Studio, but this is not going to happen. There are -many reasons why we have chosen SCons over other alternatives, for example: - -- Godot can be compiled for a dozen different platforms: all PC - platforms, all mobile platforms, many consoles, and WebAssembly. -- Developers often need to compile for several of the platforms **at - the same time**, or even different targets of the same platform. They - can't afford reconfiguring and rebuilding the project each time. - SCons can do this with no sweat, without breaking the builds. -- SCons will *never* break a build no matter how many changes, - configurations, additions, removals etc. -- Godot's build process is not simple. Several files are generated by - code (binders), others are parsed (shaders), and others need to offer - customization (plugins). This requires complex logic which is easier - to write in an actual programming language (like Python) rather than - using a mostly macro-based language only meant for building. -- Godot build process makes heavy use of cross-compiling tools. Each - platform has a specific detection process, and all these must be - handled as specific cases with special code written for each. - -Please try to keep an open mind and get at least a little familiar with it if -you are planning to build Godot yourself. Setup ----- -Please refer to the documentation for :ref:`doc_compiling_for_android`, -:ref:`doc_compiling_for_ios`, :ref:`doc_compiling_for_linuxbsd`, -:ref:`doc_compiling_for_macos`, :ref:`doc_compiling_for_uwp`, -:ref:`doc_compiling_for_web`, and :ref:`doc_compiling_for_windows`. +:ref:`Godot uses the SCons build system. ` +Please refer to the documentation for: -Note that for **Windows/Visual Studio**, you need to use ``x86_x64 Cross Tools -Command Prompt for VS 2017`` or similar, depending on your install, instead of -the standard Windows command prompt to enter the commands below. +- :ref:`doc_compiling_for_android` +- :ref:`doc_compiling_for_ios` +- :ref:`doc_compiling_for_linuxbsd` +- :ref:`doc_compiling_for_macos` +- :ref:`doc_compiling_for_uwp` +- :ref:`doc_compiling_for_web` +- :ref:`doc_compiling_for_windows` Platform selection ------------------