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
 | 
			
		||||
 | 
			
		||||
@li @subpage overview_referencenotes
 | 
			
		||||
@li @subpage overview_roughguide
 | 
			
		||||
@li @subpage overview_install
 | 
			
		||||
@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_unicode
 | 
			
		||||
@li @subpage overview_i18n
 | 
			
		||||
@li @subpage overview_events
 | 
			
		||||
@li @subpage overview_windowsizing
 | 
			
		||||
@li @subpage overview_windowids
 | 
			
		||||
@li @subpage overview_log
 | 
			
		||||
@li @subpage overview_unicode
 | 
			
		||||
@li @subpage overview_i18n
 | 
			
		||||
 | 
			
		||||
@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
 | 
			
		||||
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.
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
   @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
 | 
			
		||||
@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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user