| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file LICENSE.rst or https://cmake.org/licensing for details.
- #[=======================================================================[.rst:
- UsewxWidgets
- ------------
- This module serves as a convenience wrapper for using the wxWidgets
- library (formerly known as wxWindows) and propagates its usage requirements,
- such as library directories, include directories, and compiler flags, into
- the current directory scope for use by targets.
- Load this module in a CMake project with:
- .. code-block:: cmake
- include(UsewxWidgets)
- This module calls :command:`include_directories` and
- :command:`link_directories`, sets compile definitions for the current
- directory and appends some compile flags to use wxWidgets library after
- calling the :module:`find_package(wxWidgets) <FindwxWidgets>`.
- Examples
- ^^^^^^^^
- Include this module in a project after finding wxWidgets to configure its
- usage requirements:
- .. code-block:: cmake
- :caption: ``CMakeLists.txt``
- # Note that for MinGW users the order of libraries is important.
- find_package(wxWidgets COMPONENTS net gl core base)
- add_library(example example.cxx)
- if(wxWidgets_FOUND)
- include(UsewxWidgets)
- # Link wxWidgets libraries for each dependent executable/library target.
- target_link_libraries(example PRIVATE ${wxWidgets_LIBRARIES})
- endif()
- As of CMake 3.27, a better approach is to link only the
- :module:`wxWidgets::wxWidgets <FindwxWidgets>` imported target to specific
- targets that require it, rather than including this module. Imported
- targets provide better control of the package usage properties, such as
- include directories and compile flags, by applying them only to the targets
- they are linked to, avoiding unnecessary propagation to all targets in the
- current directory.
- .. code-block:: cmake
- :caption: ``CMakeLists.txt``
- find_package(wxWidgets COMPONENTS net gl core base)
- add_library(example example.cxx)
- # Link the imported target for each dependent executable/library target.
- target_link_libraries(example PRIVATE wxWidgets::wxWidgets)
- See Also
- ^^^^^^^^
- * The :module:`FindwxWidgets` module to find wxWidgets.
- #]=======================================================================]
- # Author: Jan Woetzel <jw -at- mip.informatik.uni-kiel.de>
- if (wxWidgets_FOUND)
- if (wxWidgets_INCLUDE_DIRS)
- if(wxWidgets_INCLUDE_DIRS_NO_SYSTEM)
- include_directories(${wxWidgets_INCLUDE_DIRS})
- else()
- include_directories(SYSTEM ${wxWidgets_INCLUDE_DIRS})
- endif()
- endif()
- if (wxWidgets_LIBRARY_DIRS)
- link_directories(${wxWidgets_LIBRARY_DIRS})
- endif()
- if (wxWidgets_DEFINITIONS)
- set_property(DIRECTORY APPEND
- PROPERTY COMPILE_DEFINITIONS ${wxWidgets_DEFINITIONS})
- endif()
- if (wxWidgets_DEFINITIONS_DEBUG)
- set_property(DIRECTORY APPEND
- PROPERTY COMPILE_DEFINITIONS_DEBUG ${wxWidgets_DEFINITIONS_DEBUG})
- endif()
- if (wxWidgets_CXX_FLAGS)
- # Flags are expected to be a string here, not a list.
- string(REPLACE ";" " " wxWidgets_CXX_FLAGS_str "${wxWidgets_CXX_FLAGS}")
- string(APPEND CMAKE_CXX_FLAGS " ${wxWidgets_CXX_FLAGS_str}")
- unset(wxWidgets_CXX_FLAGS_str)
- endif()
- else ()
- message("wxWidgets requested but not found.")
- endif()
|