wxWidgets/build/cmake/README.md

85 lines
3.3 KiB
Markdown
Raw Normal View History

This directory contains [CMake][1] files needed to build
native build files for wxWidgets.
For building wxWidgets or using wxWidgets in your CMake project please see
the [CMake overview](../../docs/doxygen/overviews/cmake.md) in the wxWidgets
documentation.
CMake files organization
========================
All CMake files are located in _$(wx)/build/cmake_ additionally there is a
_CMakeLists.txt_ in the root directory.
Files
-----
* $(wx)/CMakeLists.txt
* This should only contain commands and definitions which need to be
contained in the top level and includes _main.cmake_
* config.cmake
* Generates config files used to find wxWidgets by other build systems
* Creates wx-config
* files.cmake
* List of source files generated by _$(wx)build/upmake_ from _$(wx)build/files_
* This file should usually **never** be edited manually
* However if a new group of files is added it needs to be edited manually
* functions.cmake
* contains various wxWidgets specific functions and macros used throughout
the CMake files
* Every function should contain a short description of it's parameters as
a comment before the function/macro
* install.cmake
* Handles definitions for the `install` and `uninstall` target
* init.cmake
* Initializes various variables used during the build process and for
generation of setup.h and configuration files
* main.cmake
* Includes all other cmake files
* options.cmake
* All user selectable build options should be defined in this file via
calls to `wx_option()`
* policies.cmake
* [CMake policies][2] for wxWidgets should be defined in this file
* setup.cmake
* Handles all tests required to create the _setup.h_ header based
platform and user settings
* setup.h.in
* Template for _setup.h_ updated automatically by _$(wx)/build/update-setup-h_
* source_groups.cmake
* Define source groups used in supported IDEs
* toolkit.cmake
* Define toolkit specific options and detection to this file
* uninstall.cmake.in
* Used by _install.cmake_ when creating the `uninstall` target
Sub directories
---------------
Each sub directory contains a _CMakeLists.txt_ and might contain various other
_.cmake_ files.
* demos
* Defines build targets for demos via `wx_add_demo()`
* lib
* Defines build targets for all libraries and bundle third party libraries
* Each library is contained in a separate directory and uses
`wx_add_library()` to define the library target
* Bundled third party library without upstream CMake support are defined in
a _.cmake_ file using `wx_add_builtin_library()` to define static library
targets
* modules
* Includes CMake modules used to find third party packages via [find_package()][3]
* Includes the [cotire module][4] used to for precompiled header generation
* samples
* Defines build targets for all samples via `wx_add_sample()`
* Definitions for trivial samples are included in _CMakeLists.txt_ more
complex samples might have a separate .cmake file
* tests
* Defines build targets for all tests
* utils
* Defines build targets for all utilities
[1]: https://cmake.org
[2]: https://cmake.org/cmake/help/latest/manual/cmake-policies.7.html
[3]: https://cmake.org/cmake/help/latest/command/find_package.html
[4]: https://github.com/sakra/cotire/