mirror of
https://github.com/crystalidea/qt-build-tools.git
synced 2024-11-27 13:49:04 +08:00
731 lines
24 KiB
CMake
731 lines
24 KiB
CMake
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
|
|
#[=======================================================================[.rst:
|
|
FindwxWindows
|
|
-------------
|
|
|
|
.. deprecated:: 3.0
|
|
|
|
Replaced by :module:`FindwxWidgets`.
|
|
|
|
Find wxWindows (wxWidgets) installation
|
|
|
|
This module finds if wxWindows/wxWidgets is installed and determines
|
|
where the include files and libraries are. It also determines what
|
|
the name of the library is. This code sets the following variables:
|
|
|
|
::
|
|
|
|
WXWINDOWS_FOUND = system has WxWindows
|
|
WXWINDOWS_LIBRARIES = path to the wxWindows libraries
|
|
on Unix/Linux with additional
|
|
linker flags from
|
|
"wx-config --libs"
|
|
CMAKE_WXWINDOWS_CXX_FLAGS = Compiler flags for wxWindows,
|
|
essentially "`wx-config --cxxflags`"
|
|
on Linux
|
|
WXWINDOWS_INCLUDE_DIR = where to find "wx/wx.h" and "wx/setup.h"
|
|
WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on
|
|
Unix
|
|
WXWINDOWS_DEFINITIONS = extra defines
|
|
|
|
|
|
|
|
OPTIONS If you need OpenGL support please
|
|
|
|
::
|
|
|
|
set(WXWINDOWS_USE_GL 1)
|
|
|
|
in your CMakeLists.txt *before* you include this file.
|
|
|
|
::
|
|
|
|
HAVE_ISYSTEM - true required to replace -I by -isystem on g++
|
|
|
|
|
|
|
|
For convenience include Use_wxWindows.cmake in your project's
|
|
CMakeLists.txt using
|
|
include(${CMAKE_CURRENT_LIST_DIR}/Use_wxWindows.cmake).
|
|
|
|
USAGE
|
|
|
|
::
|
|
|
|
set(WXWINDOWS_USE_GL 1)
|
|
find_package(wxWindows)
|
|
|
|
|
|
|
|
NOTES wxWidgets 2.6.x is supported for monolithic builds e.g.
|
|
compiled in wx/build/msw dir as:
|
|
|
|
::
|
|
|
|
nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1
|
|
|
|
|
|
|
|
DEPRECATED
|
|
|
|
::
|
|
|
|
CMAKE_WX_CAN_COMPILE
|
|
WXWINDOWS_LIBRARY
|
|
CMAKE_WX_CXX_FLAGS
|
|
WXWINDOWS_INCLUDE_PATH
|
|
|
|
|
|
|
|
AUTHOR Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw>
|
|
(07/2003-01/2006)
|
|
#]=======================================================================]
|
|
|
|
# ------------------------------------------------------------------
|
|
#
|
|
# -removed OPTION for CMAKE_WXWINDOWS_USE_GL. Force the developer to SET it before calling this.
|
|
# -major update for wx 2.6.2 and monolithic build option. (10/2005)
|
|
#
|
|
# STATUS
|
|
# tested with:
|
|
# cmake 1.6.7, Linux (Suse 7.3), wxWindows 2.4.0, gcc 2.95
|
|
# cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.0, gcc 3.3
|
|
# cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.1-patch1, gcc 3.3
|
|
# cmake 1.6.7, MS Windows XP home, wxWindows 2.4.1, MS Visual Studio .net 7 2002 (static build)
|
|
# cmake 2.0.5 on Windows XP and Suse Linux 9.2
|
|
# cmake 2.0.6 on Windows XP and Suse Linux 9.2, wxWidgets 2.6.2 MONOLITHIC build
|
|
# cmake 2.2.2 on Windows XP, MS Visual Studio .net 2003 7.1 wxWidgets 2.6.2 MONOLITHIC build
|
|
#
|
|
# TODO
|
|
# -OPTION for unicode builds
|
|
# -further testing of DLL linking under MS WIN32
|
|
# -better support for non-monolithic builds
|
|
#
|
|
|
|
|
|
if(WIN32)
|
|
set(WIN32_STYLE_FIND 1)
|
|
endif()
|
|
if(MINGW)
|
|
set(WIN32_STYLE_FIND 0)
|
|
set(UNIX_STYLE_FIND 1)
|
|
endif()
|
|
if(UNIX)
|
|
set(UNIX_STYLE_FIND 1)
|
|
endif()
|
|
|
|
|
|
if(WIN32_STYLE_FIND)
|
|
|
|
## ######################################################################
|
|
##
|
|
## Windows specific:
|
|
##
|
|
## candidates for root/base directory of wxwindows
|
|
## should have subdirs include and lib containing include/wx/wx.h
|
|
## fix the root dir to avoid mixing of headers/libs from different
|
|
## versions/builds:
|
|
|
|
## WX supports monolithic and multiple smaller libs (since 2.5.x), we prefer monolithic for now.
|
|
## monolithic = WX is built as a single big library
|
|
## e.g. compile on WIN32 as "nmake -f makefile.vc MONOLITHIC=1 BUILD=debug SHARED=0 USE_OPENGL=1" (JW)
|
|
option(WXWINDOWS_USE_MONOLITHIC "Use monolithic build of WX??" ON)
|
|
mark_as_advanced(WXWINDOWS_USE_MONOLITHIC)
|
|
|
|
## GL libs used?
|
|
option(WXWINDOWS_USE_GL "Use Wx with GL support(glcanvas)?" ON)
|
|
mark_as_advanced(WXWINDOWS_USE_GL)
|
|
|
|
|
|
## avoid mixing of headers and libs between multiple installed WX versions,
|
|
## select just one tree here:
|
|
find_path(WXWINDOWS_ROOT_DIR include/wx/wx.h
|
|
HINTS
|
|
ENV WXWIN
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" ## WX 2.6.x
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]" ## WX 2.4.x
|
|
PATHS
|
|
C:/wxWidgets-2.6.2
|
|
D:/wxWidgets-2.6.2
|
|
C:/wxWidgets-2.6.1
|
|
D:/wxWidgets-2.6.1
|
|
C:/wxWindows-2.4.2
|
|
D:/wxWindows-2.4.2
|
|
)
|
|
# message("DBG found WXWINDOWS_ROOT_DIR: ${WXWINDOWS_ROOT_DIR}")
|
|
|
|
|
|
## find libs for combination of static/shared with release/debug
|
|
## be careful if you add something here,
|
|
## avoid mixing of headers and libs of different wx versions,
|
|
## there may be multiple WX versions installed.
|
|
set (WXWINDOWS_POSSIBLE_LIB_PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib"
|
|
)
|
|
|
|
## monolithic?
|
|
if (WXWINDOWS_USE_MONOLITHIC)
|
|
|
|
find_library(WXWINDOWS_STATIC_LIBRARY
|
|
NAMES wx wxmsw wxmsw26
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static release build library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY
|
|
NAMES wxd wxmswd wxmsw26d
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug build library" )
|
|
|
|
find_library(WXWINDOWS_SHARED_LIBRARY
|
|
NAMES wxmsw26 wxmsw262 wxmsw24 wxmsw242 wxmsw241 wxmsw240 wx23_2 wx22_9
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows shared release build library" )
|
|
|
|
find_library(WXWINDOWS_SHARED_DEBUG_LIBRARY
|
|
NAMES wxmsw26d wxmsw262d wxmsw24d wxmsw241d wxmsw240d wx23_2d wx22_9d
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows shared debug build library " )
|
|
|
|
|
|
##
|
|
## required for WXWINDOWS_USE_GL
|
|
## gl lib is always build separate:
|
|
##
|
|
find_library(WXWINDOWS_STATIC_LIBRARY_GL
|
|
NAMES wx_gl wxmsw_gl wxmsw26_gl
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static release build GL library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_GL
|
|
NAMES wxd_gl wxmswd_gl wxmsw26d_gl
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug build GL library" )
|
|
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG
|
|
NAMES wxpngd
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug png library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_LIBRARY_PNG
|
|
NAMES wxpng
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static png library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF
|
|
NAMES wxtiffd
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug tiff library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_LIBRARY_TIFF
|
|
NAMES wxtiff
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static tiff library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG
|
|
NAMES wxjpegd wxjpgd
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug jpeg library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_LIBRARY_JPEG
|
|
NAMES wxjpeg wxjpg
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static jpeg library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB
|
|
NAMES wxzlibd
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug zlib library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_LIBRARY_ZLIB
|
|
NAMES wxzlib
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static zib library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX
|
|
NAMES wxregexd
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static debug regex library" )
|
|
|
|
find_library(WXWINDOWS_STATIC_LIBRARY_REGEX
|
|
NAMES wxregex
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_lib"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows static regex library" )
|
|
|
|
|
|
|
|
## untested:
|
|
find_library(WXWINDOWS_SHARED_LIBRARY_GL
|
|
NAMES wx_gl wxmsw_gl wxmsw26_gl
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows shared release build GL library" )
|
|
|
|
find_library(WXWINDOWS_SHARED_DEBUG_LIBRARY_GL
|
|
NAMES wxd_gl wxmswd_gl wxmsw26d_gl
|
|
PATHS
|
|
"${WXWINDOWS_ROOT_DIR}/lib/vc_dll"
|
|
${WXWINDOWS_POSSIBLE_LIB_PATHS}
|
|
DOC "wxWindows shared debug build GL library" )
|
|
|
|
|
|
else ()
|
|
## WX is built as multiple small pieces libraries instead of monolithic
|
|
|
|
## DEPECATED (jw) replaced by more general WXWINDOWS_USE_MONOLITHIC ON/OFF
|
|
# option(WXWINDOWS_SEPARATE_LIBS_BUILD "Is wxWindows build with separate libs?" OFF)
|
|
|
|
## HACK: This is very dirty.
|
|
## because the libs of a particular version are explicitly listed
|
|
## and NOT searched/verified.
|
|
## TODO: Really search for each lib, then decide for
|
|
## monolithic x debug x shared x GL (=16 combinations) for at least 18 libs
|
|
## --> about 288 combinations
|
|
## thus we need a different approach so solve this correctly ...
|
|
|
|
message(STATUS "Warning: You are trying to use wxWidgets without monolithic build (WXWINDOWS_SEPARATE_LIBS_BUILD). This is a HACK, libraries are not verified! (JW).")
|
|
|
|
set(WXWINDOWS_STATIC_LIBS ${WXWINDOWS_STATIC_LIBS}
|
|
wxbase26
|
|
wxbase26_net
|
|
wxbase26_odbc
|
|
wxbase26_xml
|
|
wxmsw26_adv
|
|
wxmsw26_core
|
|
wxmsw26_dbgrid
|
|
wxmsw26_gl
|
|
wxmsw26_html
|
|
wxmsw26_media
|
|
wxmsw26_qa
|
|
wxmsw26_xrc
|
|
wxexpat
|
|
wxjpeg
|
|
wxpng
|
|
wxregex
|
|
wxtiff
|
|
wxzlib
|
|
comctl32
|
|
rpcrt4
|
|
wsock32
|
|
)
|
|
## HACK: feed in to optimized / debug libraries if both were FOUND.
|
|
set(WXWINDOWS_STATIC_DEBUG_LIBS ${WXWINDOWS_STATIC_DEBUG_LIBS}
|
|
wxbase26d
|
|
wxbase26d_net
|
|
wxbase26d_odbc
|
|
wxbase26d_xml
|
|
wxmsw26d_adv
|
|
wxmsw26d_core
|
|
wxmsw26d_dbgrid
|
|
wxmsw26d_gl
|
|
wxmsw26d_html
|
|
wxmsw26d_media
|
|
wxmsw26d_qa
|
|
wxmsw26d_xrc
|
|
wxexpatd
|
|
wxjpegd
|
|
wxpngd
|
|
wxregexd
|
|
wxtiffd
|
|
wxzlibd
|
|
comctl32
|
|
rpcrt4
|
|
wsock32
|
|
)
|
|
endif ()
|
|
|
|
|
|
##
|
|
## now we should have found all WX libs available on the system.
|
|
## let the user decide which of the available onse to use.
|
|
##
|
|
|
|
## if there is at least one shared lib available
|
|
## let user choose whether to use shared or static wxwindows libs
|
|
if(WXWINDOWS_SHARED_LIBRARY OR WXWINDOWS_SHARED_DEBUG_LIBRARY)
|
|
## default value OFF because wxWindows MSVS default build is static
|
|
option(WXWINDOWS_USE_SHARED_LIBS
|
|
"Use shared versions (dll) of wxWindows libraries?" OFF)
|
|
mark_as_advanced(WXWINDOWS_USE_SHARED_LIBS)
|
|
endif()
|
|
|
|
## add system libraries wxwindows always seems to depend on
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
comctl32
|
|
rpcrt4
|
|
wsock32
|
|
)
|
|
|
|
if (NOT WXWINDOWS_USE_SHARED_LIBS)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
## these ones don't seem required, in particular ctl3d32 is not necessary (Jan Woetzel 07/2003)
|
|
# ctl3d32
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB} optimized ${WXWINDOWS_STATIC_LIBRARY_ZLIB}
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX} optimized ${WXWINDOWS_STATIC_LIBRARY_REGEX}
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG} optimized ${WXWINDOWS_STATIC_LIBRARY_PNG}
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG} optimized ${WXWINDOWS_STATIC_LIBRARY_JPEG}
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF} optimized ${WXWINDOWS_STATIC_LIBRARY_TIFF}
|
|
)
|
|
endif ()
|
|
|
|
## opengl/glu: TODO/FIXME: better use FindOpenGL.cmake here
|
|
## assume release versions of glu an dopengl, here.
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
opengl32
|
|
glu32 )
|
|
endif ()
|
|
|
|
##
|
|
## select between use of shared or static wxWindows lib then set libs to use
|
|
## for debug and optimized build. so the user can switch between debug and
|
|
## release build e.g. within MS Visual Studio without running cmake with a
|
|
## different build directory again.
|
|
##
|
|
## then add the build specific include dir for wx/setup.h
|
|
##
|
|
|
|
if(WXWINDOWS_USE_SHARED_LIBS)
|
|
##message("DBG wxWindows use shared lib selected.")
|
|
## assume that both builds use the same setup(.h) for simplicity
|
|
|
|
## shared: both wx (debug and release) found?
|
|
## assume that both builds use the same setup(.h) for simplicity
|
|
if(WXWINDOWS_SHARED_DEBUG_LIBRARY AND WXWINDOWS_SHARED_LIBRARY)
|
|
##message("DBG wx shared: debug and optimized found.")
|
|
find_path(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
|
|
${WXWINDOWS_ROOT_DIR}/lib/mswdlld
|
|
${WXWINDOWS_ROOT_DIR}/lib/mswdll
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_dll/mswd
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_dll/msw )
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
debug ${WXWINDOWS_SHARED_DEBUG_LIBRARY}
|
|
optimized ${WXWINDOWS_SHARED_LIBRARY} )
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
debug ${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL}
|
|
optimized ${WXWINDOWS_SHARED_LIBRARY_GL} )
|
|
endif ()
|
|
endif()
|
|
|
|
## shared: only debug wx lib found?
|
|
if(WXWINDOWS_SHARED_DEBUG_LIBRARY)
|
|
if(NOT WXWINDOWS_SHARED_LIBRARY)
|
|
##message("DBG wx shared: debug (but no optimized) found.")
|
|
find_path(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
|
|
${WXWINDOWS_ROOT_DIR}/lib/mswdlld
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_dll/mswd )
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL} )
|
|
endif ()
|
|
endif()
|
|
endif()
|
|
|
|
## shared: only release wx lib found?
|
|
if(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
|
|
if(WXWINDOWS_SHARED_LIBRARY)
|
|
##message("DBG wx shared: optimized (but no debug) found.")
|
|
find_path(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
|
|
${WXWINDOWS_ROOT_DIR}/lib/mswdll
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_dll/msw )
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_SHARED_DEBUG_LIBRARY_GL} )
|
|
endif ()
|
|
endif()
|
|
endif()
|
|
|
|
## shared: none found?
|
|
if(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
|
|
if(NOT WXWINDOWS_SHARED_LIBRARY)
|
|
message(STATUS
|
|
"No shared wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
|
|
endif()
|
|
endif()
|
|
|
|
#########################################################################################
|
|
else()
|
|
|
|
##jw: DEPRECATED if(NOT WXWINDOWS_SEPARATE_LIBS_BUILD)
|
|
|
|
## static: both wx (debug and release) found?
|
|
## assume that both builds use the same setup(.h) for simplicity
|
|
if(WXWINDOWS_STATIC_DEBUG_LIBRARY AND WXWINDOWS_STATIC_LIBRARY)
|
|
##message("DBG wx static: debug and optimized found.")
|
|
find_path(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
|
|
${WXWINDOWS_ROOT_DIR}/lib/mswd
|
|
${WXWINDOWS_ROOT_DIR}/lib/msw
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_lib/mswd
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_lib/msw )
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY}
|
|
optimized ${WXWINDOWS_STATIC_LIBRARY} )
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY_GL}
|
|
optimized ${WXWINDOWS_STATIC_LIBRARY_GL} )
|
|
endif ()
|
|
endif()
|
|
|
|
## static: only debug wx lib found?
|
|
if(WXWINDOWS_STATIC_DEBUG_LIBRARY)
|
|
if(NOT WXWINDOWS_STATIC_LIBRARY)
|
|
##message("DBG wx static: debug (but no optimized) found.")
|
|
find_path(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
|
|
${WXWINDOWS_ROOT_DIR}/lib/mswd
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_lib/mswd )
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_STATIC_DEBUG_LIBRARY} )
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_STATIC_DEBUG_LIBRARY_GL} )
|
|
endif ()
|
|
endif()
|
|
endif()
|
|
|
|
## static: only release wx lib found?
|
|
if(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
|
|
if(WXWINDOWS_STATIC_LIBRARY)
|
|
##message("DBG wx static: optimized (but no debug) found.")
|
|
find_path(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
|
|
${WXWINDOWS_ROOT_DIR}/lib/msw
|
|
${WXWINDOWS_ROOT_DIR}/lib/vc_lib/msw )
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_STATIC_LIBRARY} )
|
|
if (WXWINDOWS_USE_GL)
|
|
set(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES}
|
|
${WXWINDOWS_STATIC_LIBRARY_GL} )
|
|
endif ()
|
|
endif()
|
|
endif()
|
|
|
|
## static: none found?
|
|
if(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY AND NOT WXWINDOWS_SEPARATE_LIBS_BUILD)
|
|
if(NOT WXWINDOWS_STATIC_LIBRARY)
|
|
message(STATUS
|
|
"No static wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
|
|
## not necessary in wxWindows 2.4.1 and 2.6.2
|
|
## but it may fix a previous bug, see
|
|
## http://lists.wxwindows.org/cgi-bin/ezmlm-cgi?8:mss:37574:200305:mpdioeneabobmgjenoap
|
|
option(WXWINDOWS_SET_DEFINITIONS "Set additional defines for wxWindows" OFF)
|
|
mark_as_advanced(WXWINDOWS_SET_DEFINITIONS)
|
|
if (WXWINDOWS_SET_DEFINITIONS)
|
|
set(WXWINDOWS_DEFINITIONS "-DWINVER=0x400")
|
|
else ()
|
|
# clear:
|
|
set(WXWINDOWS_DEFINITIONS "")
|
|
endif ()
|
|
|
|
|
|
|
|
## Find the include directories for wxwindows
|
|
## the first, build specific for wx/setup.h was determined before.
|
|
## add inc dir for general for "wx/wx.h"
|
|
find_path(WXWINDOWS_INCLUDE_DIR wx/wx.h
|
|
"${WXWINDOWS_ROOT_DIR}/include" )
|
|
## append the build specific include dir for wx/setup.h:
|
|
if (WXWINDOWS_INCLUDE_DIR_SETUPH)
|
|
set(WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} ${WXWINDOWS_INCLUDE_DIR_SETUPH} )
|
|
endif ()
|
|
|
|
|
|
|
|
mark_as_advanced(
|
|
WXWINDOWS_ROOT_DIR
|
|
WXWINDOWS_INCLUDE_DIR
|
|
WXWINDOWS_INCLUDE_DIR_SETUPH
|
|
WXWINDOWS_STATIC_LIBRARY
|
|
WXWINDOWS_STATIC_LIBRARY_GL
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY_GL
|
|
WXWINDOWS_STATIC_LIBRARY_ZLIB
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY_ZLIB
|
|
WXWINDOWS_STATIC_LIBRARY_REGEX
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY_REGEX
|
|
WXWINDOWS_STATIC_LIBRARY_PNG
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY_PNG
|
|
WXWINDOWS_STATIC_LIBRARY_JPEG
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY_JPEG
|
|
WXWINDOWS_STATIC_DEBUG_LIBRARY_TIFF
|
|
WXWINDOWS_STATIC_LIBRARY_TIFF
|
|
WXWINDOWS_SHARED_LIBRARY
|
|
WXWINDOWS_SHARED_DEBUG_LIBRARY
|
|
WXWINDOWS_SHARED_LIBRARY_GL
|
|
WXWINDOWS_SHARED_DEBUG_LIBRARY_GL
|
|
)
|
|
|
|
|
|
else()
|
|
|
|
if (UNIX_STYLE_FIND)
|
|
## ######################################################################
|
|
##
|
|
## UNIX/Linux specific:
|
|
##
|
|
## use backquoted wx-config to query and set flags and libs:
|
|
## 06/2003 Jan Woetzel
|
|
##
|
|
|
|
option(WXWINDOWS_USE_SHARED_LIBS "Use shared versions (.so) of wxWindows libraries" ON)
|
|
mark_as_advanced(WXWINDOWS_USE_SHARED_LIBS)
|
|
|
|
# JW removed option and force the develper th SET it.
|
|
# option(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional
|
|
# --gl-libs for wx-config)?" OFF)
|
|
|
|
# wx-config should be in your path anyhow, usually no need to set WXWIN or
|
|
# search in ../wx or ../../wx
|
|
find_program(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
|
|
NAMES $ENV{WX_CONFIG} wx-config
|
|
HINTS
|
|
ENV WXWIN
|
|
$ENV{WXWIN}/bin
|
|
PATHS
|
|
../wx/bin
|
|
../../wx/bin )
|
|
|
|
# check whether wx-config was found:
|
|
if(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
|
|
|
|
# use shared/static wx lib?
|
|
# remember: always link shared to use systems GL etc. libs (no static
|
|
# linking, just link *against* static .a libs)
|
|
if(WXWINDOWS_USE_SHARED_LIBS)
|
|
set(WX_CONFIG_ARGS_LIBS "--libs")
|
|
else()
|
|
set(WX_CONFIG_ARGS_LIBS "--static --libs")
|
|
endif()
|
|
|
|
# do we need additionial wx GL stuff like GLCanvas ?
|
|
if(WXWINDOWS_USE_GL)
|
|
string(APPEND WX_CONFIG_ARGS_LIBS " --gl-libs" )
|
|
endif()
|
|
##message("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===")
|
|
|
|
# set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user:
|
|
if (HAVE_ISYSTEM) # does the compiler support -isystem ?
|
|
if (NOT APPLE) # -isystem seem sto be unsuppored on Mac
|
|
if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
|
|
if (CMAKE_CXX_COMPILER MATCHES g\\+\\+)
|
|
set(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`")
|
|
else()
|
|
set(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags`")
|
|
endif()
|
|
endif()
|
|
endif ()
|
|
endif ()
|
|
##message("DBG: for compilation:
|
|
##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===")
|
|
|
|
# keep the back-quoted string for clarity
|
|
set(WXWINDOWS_LIBRARIES "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} ${WX_CONFIG_ARGS_LIBS}`")
|
|
##message("DBG2: for linking:
|
|
##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===")
|
|
|
|
# evaluate wx-config output to separate linker flags and linkdirs for
|
|
# rpath:
|
|
exec_program(${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE}
|
|
ARGS ${WX_CONFIG_ARGS_LIBS}
|
|
OUTPUT_VARIABLE WX_CONFIG_LIBS )
|
|
|
|
## extract linkdirs (-L) for rpath
|
|
## use regular expression to match wildcard equivalent "-L*<endchar>"
|
|
## with <endchar> is a space or a semicolon
|
|
string(REGEX MATCHALL "[-][L]([^ ;])+" WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" )
|
|
# message("DBG WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX=${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX}")
|
|
|
|
## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
|
|
## replace -L by ; because the separator seems to be lost otherwise (bug or
|
|
## feature?)
|
|
if(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)
|
|
string(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} )
|
|
# message("DBG WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}")
|
|
endif()
|
|
|
|
|
|
## replace space separated string by semicolon separated vector to make it
|
|
## work with LINK_DIRECTORIES
|
|
separate_arguments(WXWINDOWS_LINK_DIRECTORIES)
|
|
|
|
mark_as_advanced(
|
|
CMAKE_WXWINDOWS_CXX_FLAGS
|
|
WXWINDOWS_INCLUDE_DIR
|
|
WXWINDOWS_LIBRARIES
|
|
CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
|
|
)
|
|
|
|
|
|
## we really need wx-config...
|
|
else()
|
|
message(STATUS "Cannot find wx-config anywhere on the system. Please put the file into your path or specify it in CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE.")
|
|
mark_as_advanced(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
|
|
endif()
|
|
|
|
|
|
|
|
else()
|
|
message(STATUS "FindwxWindows.cmake: Platform unknown/unsupported by FindwxWindows.cmake. It's neither WIN32 nor UNIX")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
if(WXWINDOWS_LIBRARIES)
|
|
if(WXWINDOWS_INCLUDE_DIR OR CMAKE_WXWINDOWS_CXX_FLAGS)
|
|
## found all we need.
|
|
set(WXWINDOWS_FOUND 1)
|
|
|
|
## set deprecated variables for backward compatibility:
|
|
set(CMAKE_WX_CAN_COMPILE ${WXWINDOWS_FOUND})
|
|
set(WXWINDOWS_LIBRARY ${WXWINDOWS_LIBRARIES})
|
|
set(WXWINDOWS_INCLUDE_PATH ${WXWINDOWS_INCLUDE_DIR})
|
|
set(WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES})
|
|
set(CMAKE_WX_CXX_FLAGS ${CMAKE_WXWINDOWS_CXX_FLAGS})
|
|
|
|
endif()
|
|
endif()
|