mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 21:00:17 -06:00
This variable in current CMake versions doesn't seem to be needed in any case. Either if the UsewxWidgets is created in the project's own CMAKE_MODULE_PATH location, or if FindwxWidgets is "forked" into project own modules, include(UsewxWidgets) always includes the wanted file.
103 lines
3.2 KiB
CMake
103 lines
3.2 KiB
CMake
# 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()
|