blob: 37510253c560e26692869e555e59cd4989c0ad02 [file] [log] [blame]
# 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 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 ``UsewxWidgets`` module in project's ``CMakeLists.txt``:
.. code-block:: cmake
# Note that for MinGW users the order of libraries is important.
find_package(wxWidgets REQUIRED net gl core base)
# Above also sets the wxWidgets_USE_FILE variable that points to this module.
include(${wxWidgets_USE_FILE})
# Link wxWidgets libraries for each dependent executable/library target.
target_link_libraries(<ProjectTarget> ${wxWidgets_LIBRARIES})
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
# CMakeLists.txt
find_package(wxWidgets)
# Link the imported target for each dependent executable/library target.
target_link_libraries(<ProjectTarget> wxWidgets::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()