Add documentation on using CMake with wxWidgets
This commit is contained in:
		| @@ -294,7 +294,7 @@ INPUT                  = mainpages \ | |||||||
|                          overviews \ |                          overviews \ | ||||||
|                          ../../interface |                          ../../interface | ||||||
| INPUT_ENCODING         = UTF-8 | INPUT_ENCODING         = UTF-8 | ||||||
| FILE_PATTERNS          = *.h | FILE_PATTERNS          = *.h *.md | ||||||
| RECURSIVE              = YES # Default: NO | RECURSIVE              = YES # Default: NO | ||||||
| EXCLUDE                = | EXCLUDE                = | ||||||
| EXCLUDE_SYMLINKS       = NO | EXCLUDE_SYMLINKS       = NO | ||||||
|   | |||||||
| @@ -22,6 +22,7 @@ topics related to building applications with wxWidgets. | |||||||
| @li @subpage overview_roughguide | @li @subpage overview_roughguide | ||||||
| @li @subpage overview_helloworld | @li @subpage overview_helloworld | ||||||
| @li @subpage overview_python | @li @subpage overview_python | ||||||
|  | @li @subpage overview_cmake | ||||||
|  |  | ||||||
| @section page_topics_programming Important wxWidgets Topics | @section page_topics_programming Important wxWidgets Topics | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										110
									
								
								docs/doxygen/overviews/cmake.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								docs/doxygen/overviews/cmake.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,110 @@ | |||||||
|  | CMake Overview                         {#overview_cmake} | ||||||
|  | ============== | ||||||
|  | [TOC] | ||||||
|  |  | ||||||
|  | CMake allows building wxWidgets on various platforms with your preferred build | ||||||
|  | system. | ||||||
|  |  | ||||||
|  | Most linux distributions contain CMake as a package on Windows and OS X you can | ||||||
|  | download an installer at the [CMake Page](https://cmake.org). | ||||||
|  |  | ||||||
|  | Using the CMake GUI                    {#cmake_gui} | ||||||
|  | =================== | ||||||
|  | 1. Start the CMake GUI  | ||||||
|  | 2. Specify the wxWidgets root as your source folder | ||||||
|  | 3. Specify a path where the build files should be created. It's recommended to | ||||||
|  |    use a path outside the wxWidgets root folder. | ||||||
|  | 4. Press the *Configure* button and you will be asked which IDE or build system | ||||||
|  |    you wish to use | ||||||
|  | 5. *Optionally*: Customize any of the options | ||||||
|  | 6. Press the *Generate* button | ||||||
|  | 7. Open the wxWidgets project with your preferred IDE | ||||||
|  |  | ||||||
|  | Using the CMake Command Line           {#cmake_cli} | ||||||
|  | ============================ | ||||||
|  | 1. Create a folder where the build/project files should be created | ||||||
|  | 2. Change into the created folder | ||||||
|  | 3. Run `cmake -G "Unix Makefiles" path_to_wxWidgets_root` | ||||||
|  | 4. After that you can run `cmake --build .` to start the build process or | ||||||
|  |    directly use your choosen build system. | ||||||
|  |  | ||||||
|  | Run `cmake --help` to see a list of available generators on your platform. | ||||||
|  | These can than be specified using the -G command line option. On Windows it | ||||||
|  | is recommended to use Visual Studio and on OS X Xcode is recommended. | ||||||
|  | Various build options can be specified using -D see | ||||||
|  | [available options](#cmake_options). | ||||||
|  |  | ||||||
|  | Command Line Examples                  {#cmake_cli_samples} | ||||||
|  | --------------------- | ||||||
|  | Building with tests using [Ninja](https://ninja-build.org/): | ||||||
|  | ~~~{.sh} | ||||||
|  |   cmake -G "Ninja" ~/Downloads/wxWidgets_3.1 -DwxBUILD_TESTS=ALL | ||||||
|  |   cmake --build . | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | Building the minimal sample: | ||||||
|  | ~~~{.sh} | ||||||
|  |     cmake ~/Downloads/wxWidgets_3.1 -DwxBUILD_SAMPLES=SOME | ||||||
|  |     cmake --build . --target minimal | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | Installing static libraries to some path: | ||||||
|  | ~~~{.sh} | ||||||
|  |     cmake ~/Downloads/wxWidgets_3.1 \ | ||||||
|  |       -DCMAKE_INSTALL_PREFIX=~/wx_install \ | ||||||
|  |       -DwxBUILD_SHARED=OFF | ||||||
|  |     cmake --build . --target install | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Build options                          {#cmake_options} | ||||||
|  | ======================= | ||||||
|  | The following list of build options can either be configured in the CMake UI | ||||||
|  | or specified via the -D command line option when running the cmake command. | ||||||
|  |  | ||||||
|  | Option Name                   | Type   | Description | ||||||
|  | ----------------------------- | -----  | ------------------------------------ | ||||||
|  | wxBUILD_SHARED                | BOOL   | Build shared libraries | ||||||
|  | wxBUILD_TESTS                 | STRING | CONSOLE_ONLY, ALL or OFF | ||||||
|  | wxBUILD_SAMPLES               | STRING | SOME, ALL or OFF | ||||||
|  | wxUSE_GUI                     | BOOL   | Build the UI libraries | ||||||
|  | wxBUILD_COMPATIBILITY         | STRING | 2.8, 3.0 or 3.1 API compatibility | ||||||
|  |  | ||||||
|  | Using CMake with your applications     {#cmake_apps} | ||||||
|  | ================================== | ||||||
|  | If you are using CMake with your own application there are various ways to use | ||||||
|  | wxWidgets: | ||||||
|  | * Using an installed, binary or compiled version of wxWidgets | ||||||
|  | using `find_package()` | ||||||
|  | * wxWidgets as a sub directory. | ||||||
|  | * CMake's [ExternalProject module](https://cmake.org/cmake/help/latest/module/ExternalProject.html). | ||||||
|  |  | ||||||
|  | Using find_package                     {#cmake_find_package} | ||||||
|  | ------------------ | ||||||
|  | You can use `find_package(wxWidgets)` to use a compiled version of wxWidgets. | ||||||
|  | Have a look at the [CMake Documentation](https://cmake.org/cmake/help/latest/module/FindwxWidgets.html) | ||||||
|  | for detailed instructions. | ||||||
|  |  | ||||||
|  | Your *CMakeLists.txt* would look like this: | ||||||
|  | ~~~ | ||||||
|  | ... | ||||||
|  |  | ||||||
|  | find_package(wxWidgets REQUIRED COMPONENTS net core base) | ||||||
|  | include(${wxWidgets_USE_FILE}) | ||||||
|  | add_executable(myapp myapp.cpp) | ||||||
|  | target_link_libraries(myapp ${wxWidgets_LIBRARIES}) | ||||||
|  | ~~~ | ||||||
|  |  | ||||||
|  | Using a sub directory                  {#cmake_subdir} | ||||||
|  | --------------------- | ||||||
|  | You can use wxWidgets as a subdirectory in your application's build tree | ||||||
|  | e.g. as a git submodule. This way the wxWidgets libraries will be part | ||||||
|  | of your applications build process. | ||||||
|  |  | ||||||
|  | Your *CMakeLists.txt* would look like this: | ||||||
|  | ~~~ | ||||||
|  | ... | ||||||
|  | add_subdirectory(libs/wxWidgets) | ||||||
|  | add_executable(myapp myapp.cpp) | ||||||
|  | target_link_libraries(myapp net core base) | ||||||
|  | ~~~ | ||||||
		Reference in New Issue
	
	Block a user