127 lines
4.8 KiB
Markdown
127 lines
4.8 KiB
Markdown
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 macOS 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 chosen 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 macOS 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 | Default | Description
|
|
------------------------- | ----- | ------- | ----------------------------
|
|
wxBUILD_SHARED | BOOL | ON | Build shared or static libraries
|
|
wxBUILD_TESTS | STRING | OFF | CONSOLE_ONLY, ALL or OFF
|
|
wxBUILD_SAMPLES | STRING | OFF | SOME, ALL or OFF
|
|
wxBUILD_DEMOS | BOOL | OFF | Build demo applications
|
|
wxUSE_GUI | BOOL | ON | Build the UI libraries
|
|
wxBUILD_COMPATIBILITY | STRING | 3.0 | 2.8, 3.0 or 3.1 API compatibility
|
|
wxBUILD_PRECOMP | BOOL | ON | Use precompiled headers
|
|
wxBUILD_MONOLITHIC | BOOL | OFF | Build a single library
|
|
|
|
A complete list of options and advanced options can be found when using the
|
|
CMake GUI.
|
|
|
|
Recommendations {#cmake_recommendations}
|
|
=======================
|
|
While CMake in wxWidgets aims to support most generators available
|
|
in CMake the following generators are recommended:
|
|
* Windows: Visual Studio (any supported version)
|
|
* macOS: Xcode
|
|
* Linux: Ninja or Makefiles
|
|
|
|
CMake 3.10 or newer is recommended. The minimum version required is 2.8.12.
|
|
|
|
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. wxWidgets also provides an example CMake file in the minimal sample folder.
|
|
|
|
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 wx::net wx::core wx::base)
|
|
~~~
|