Merge branch 'build-docs'
Improve installation and build documentation. See https://github.com/wxWidgets/wxWidgets/pull/2319 Closes #18720.
This commit is contained in:
		@@ -18,20 +18,20 @@ topics related to building applications with wxWidgets.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@section page_topics_starting Starting with wxWidgets
 | 
					@section page_topics_starting Starting with wxWidgets
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@li @subpage overview_referencenotes
 | 
					@li @subpage overview_install
 | 
				
			||||||
@li @subpage overview_roughguide
 | 
					 | 
				
			||||||
@li @subpage overview_helloworld
 | 
					@li @subpage overview_helloworld
 | 
				
			||||||
@li @subpage overview_cmake
 | 
					@li @subpage overview_roughguide
 | 
				
			||||||
 | 
					@li @subpage overview_referencenotes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@section page_topics_programming Important wxWidgets Topics
 | 
					@section page_topics_programming Conceptual Overviews
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@li @subpage overview_app
 | 
					@li @subpage overview_app
 | 
				
			||||||
@li @subpage overview_unicode
 | 
					 | 
				
			||||||
@li @subpage overview_i18n
 | 
					 | 
				
			||||||
@li @subpage overview_events
 | 
					@li @subpage overview_events
 | 
				
			||||||
@li @subpage overview_windowsizing
 | 
					@li @subpage overview_windowsizing
 | 
				
			||||||
@li @subpage overview_windowids
 | 
					@li @subpage overview_windowids
 | 
				
			||||||
@li @subpage overview_log
 | 
					@li @subpage overview_log
 | 
				
			||||||
 | 
					@li @subpage overview_unicode
 | 
				
			||||||
 | 
					@li @subpage overview_i18n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@section page_topics_nongui Non-GUI Classes
 | 
					@section page_topics_nongui Non-GUI Classes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,9 @@
 | 
				
			|||||||
This page shows a very simple wxWidgets program that can be used as a skeleton
 | 
					This page shows a very simple wxWidgets program that can be used as a skeleton
 | 
				
			||||||
for your own code. While it does nothing very useful, it introduces a couple of
 | 
					for your own code. While it does nothing very useful, it introduces a couple of
 | 
				
			||||||
important concepts and explains how to write a working wxWidgets application.
 | 
					important concepts and explains how to write a working wxWidgets application.
 | 
				
			||||||
 | 
					Trying building and running this application is also a good way of checking
 | 
				
			||||||
 | 
					that wxWidgets is correctly installed on your system. And if you haven't
 | 
				
			||||||
 | 
					installed wxWidgets yet, please @ref overview_install "do it first".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Note that this simple example creates the UI entirely from C++ code which is
 | 
					Note that this simple example creates the UI entirely from C++ code which is
 | 
				
			||||||
fine for a simple example, but more realistic examples will typically define
 | 
					fine for a simple example, but more realistic examples will typically define
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										117
									
								
								docs/doxygen/overviews/install.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								docs/doxygen/overviews/install.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,117 @@
 | 
				
			|||||||
 | 
					Installing wxWidgets    {#overview_install}
 | 
				
			||||||
 | 
					====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxWidgets headers and libraries must be available in order to build the
 | 
				
			||||||
 | 
					applications using it, so the first step when starting to use wxWidgets is to
 | 
				
			||||||
 | 
					install it. This can be done, for all platforms and library versions, by
 | 
				
			||||||
 | 
					building wxWidgets from sources, but for the most common platforms pre-built
 | 
				
			||||||
 | 
					binaries of the libraries are also provided, so the first decision to make is
 | 
				
			||||||
 | 
					whether to use these binaries or build the library yourself. Building the
 | 
				
			||||||
 | 
					libraries yourself allows you to compile the latest version using exactly the
 | 
				
			||||||
 | 
					options you need, and so is the most flexible solution, but using the binaries
 | 
				
			||||||
 | 
					may be simpler and faster -- the choice is yours, just follow the instructions
 | 
				
			||||||
 | 
					in the corresponding section below depending on the approach you prefer. Of
 | 
				
			||||||
 | 
					course, you only need to do one _or_ the other, _not_ both.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Using Binaries
 | 
				
			||||||
 | 
					--------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					How to install binaries depends on your platform:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For Microsoft Windows (MSW), wxWidgets project provides official binaries
 | 
				
			||||||
 | 
					  on the [Downloads page](http://www.wxwidgets.org/downloads/), please see
 | 
				
			||||||
 | 
					  the [instructions for using them](@ref plat_msw_binaries).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For Linux, and other free Unix-like systems, wxWidgets packages are available
 | 
				
			||||||
 | 
					  in system repositories under the name "wxGTK". Note that to develop
 | 
				
			||||||
 | 
					  applications using wxWidgets you may need to install the "development"
 | 
				
			||||||
 | 
					  packages and not just the libraries needed for running the applications using
 | 
				
			||||||
 | 
					  wxWidgets. For example, under Debian and Debian-derived systems such as
 | 
				
			||||||
 | 
					  Ubuntu, you need to run `apt get libwxgtkX.Y-dev`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For macOS, wxWidgets is available in third-party package managers such as
 | 
				
			||||||
 | 
					  [brew][1] or [MacPorts][2], and you can install them in the usual way.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1]: https://brew.sh/
 | 
				
			||||||
 | 
					[2]: https://www.macports.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Additionally, some third-party C++ package managers also provide wxWidgets
 | 
				
			||||||
 | 
					binaries. For example, please see [this post][3] for the instructions about
 | 
				
			||||||
 | 
					using [vcpkg][4] C++ package manager for installing wxWidgets.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[3]: https://www.wxwidgets.org/blog/2019/01/wxwidgets-and-vcpkg/
 | 
				
			||||||
 | 
					[4]: https://github.com/microsoft/vcpkg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Building from Source
 | 
				
			||||||
 | 
					--------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Getting the sources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To build the library you need to get its sources first. The recommended way to
 | 
				
			||||||
 | 
					do it is to use Git to check them out from the official wxWidgets repository
 | 
				
			||||||
 | 
					using the following command:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ git clone --recurse-submodules https://github.com/wxWidgets/wxWidgets.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Alternatively, you can download the sources from the [downloads page][1].
 | 
				
			||||||
 | 
					Please note that all the source archives in different formats (ZIP, 7z,
 | 
				
			||||||
 | 
					tar.bz2) contain the same files, but use different line ending formats: Unix
 | 
				
			||||||
 | 
					("LF") for the latter one and DOS ("CR LF") for the two other ones, and it is
 | 
				
			||||||
 | 
					usually preferable to choose the format corresponding to the current platform.
 | 
				
			||||||
 | 
					When downloading the sources with DOS ends of lines, prefer 7z format for much
 | 
				
			||||||
 | 
					smaller file size.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Selecting the build system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					wxWidgets can be built using [CMake](https://cmake.org/) under all platforms.
 | 
				
			||||||
 | 
					Please follow [CMake build instructions](@ref overview_cmake) if you prefer to
 | 
				
			||||||
 | 
					use it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Otherwise, please use the appropriate instructions depending on your platform:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- For native wxMSW port under [Microsoft Windows](@ref plat_msw_install).
 | 
				
			||||||
 | 
					- For wxGTK under [Linux and other Unix-like systems](@ref plat_gtk_install).
 | 
				
			||||||
 | 
					- For native wxOSX port under [macOS](@ref plat_osx_install).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The wxWidgets ports mentioned above are the main ones, however other variants
 | 
				
			||||||
 | 
					also exist, see [platform details](@ref page_port) page for the full list.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Verifying the Installation
 | 
				
			||||||
 | 
					--------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After installing wxWidgets, it is recommended to check that the library can
 | 
				
			||||||
 | 
					actually be used by building a minimal wxWidgets program using it, such as
 | 
				
			||||||
 | 
					`samples/minimal/minimal.cpp` included in wxWidgets distributions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You may choose to build this program in any of the following ways:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Directly from command line under any Unix-like systems, including macOS and
 | 
				
			||||||
 | 
					  Unix-like environments such as Cygwin or MSYS2 under MSW, just run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $ c++ -o minimal minimal.cpp `wx-config --cxxflags --libs`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Please note that you *must* use `wx-config` to obtain the compiler and linker
 | 
				
			||||||
 | 
					  flags in this case.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Using CMake, and the provided `samples/minimal/CMakeLists.txt` file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Using Microsoft Visual Studio IDE: simply create a new project and add the
 | 
				
			||||||
 | 
					  provided `wxwidgets.props` property sheet file to it as explained in the
 | 
				
			||||||
 | 
					  [instructions](@ref #msw_build_apps) and build the project as usual.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Using another IDE with wxWidgets support, such as [Code::Blocks][1] or
 | 
				
			||||||
 | 
					  [CodeLite][2], please use the IDE wizards.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1]: https://www.codeblocks.org/
 | 
				
			||||||
 | 
					[2]: https://codelite.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- If you use another IDE, under Unix you should run `wx-config --cxxflags` and
 | 
				
			||||||
 | 
					  `wx-config --libs` commands separately and copy-and-paste their output to the
 | 
				
			||||||
 | 
					  "Additional preprocessor options" and "Additional linker options" fields in
 | 
				
			||||||
 | 
					  your IDE, respectively. Under MSW systems you need to configure the IDE using
 | 
				
			||||||
 | 
					  the instructions in the ["manual setup"](@ref #msw_build_apps) section.
 | 
				
			||||||
@@ -255,6 +255,11 @@ n:
 | 
				
			|||||||
   string iterators instead if possible or replace this expression with
 | 
					   string iterators instead if possible or replace this expression with
 | 
				
			||||||
   @code s.c_str() + n @endcode otherwise.
 | 
					   @code s.c_str() + n @endcode otherwise.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 - When using C++11 range-based for loop, the natural construct for iterating
 | 
				
			||||||
 | 
					   over wxString @code for ( auto& ch: s ) @endcode doesn't compile because of
 | 
				
			||||||
 | 
					   the unusual iterator type and @code for ( wxUniCharRef ch: s ) @endcode
 | 
				
			||||||
 | 
					   needs to be used instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Another class of problems is related to the fact that the value returned by
 | 
					Another class of problems is related to the fact that the value returned by
 | 
				
			||||||
@c c_str() itself is also not just a pointer to a buffer but a value of helper
 | 
					@c c_str() itself is also not just a pointer to a buffer but a value of helper
 | 
				
			||||||
class wxCStrData which is implicitly convertible to both narrow and wide
 | 
					class wxCStrData which is implicitly convertible to both narrow and wide
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user