findwxwidgets.cmake

来自「DTMK软件开发包,此为开源软件,是一款很好的医学图像开发资源.」· CMAKE 代码 · 共 486 行 · 第 1/2 页

CMAKE
486
字号
# - Find a wxWidgets (a.k.a., wxWindows) installation.
# This module finds if wxWidgets is installed and selects a default
# configuration to use.
#
# The following variables are searched for and set to defaults in case
# of multiple choices. Change them if the defaults are not desired:
#
#  WXWIDGETS_ROOT_DIR      - Base wxWidgets directory
#                            (e.g., C:/wxWidgets-2.6.3).
#  WXWIDGETS_LIB_DIR       - Path to wxWidgets libraries
#                            (e.g., C:/wxWidgets-2.6.3/lib/vc_lib).
#  WXWIDGETS_CONFIGURATION - Configuration to use
#                            (e.g., msw, mswd, mswu, mswunivud, etc.)
#  WXWIDGETS_USE_LIBS      - Libraries to use besides the common
#                            required ones; set to base and core by
#                            default.
#
# The following are set after configuration is done:
#
#  WXWIDGETS_FOUND            - Set to TRUE if wxWidgets was found.
#  WXWIDGETS_INCLUDE_DIR      - Include directories for WIN32 (i.e.,
#                               where to find "wx/wx.h" and
#                               "wx/setup.h"); empty for unices.
#  WXWIDGETS_LIBRARIES        - Path to the wxWidgets libraries.
#  WXWIDGETS_LINK_DIRECTORIES - Link dirs, useful for rpath on UNIX.
#                               Empty string in WIN32 environment.
#  WXWIDGETS_CXX_FLAGS        - Include dirs and ompiler flags for
#                               unices, empty on WIN32. Esentially
#                               "`wx-config --cxxflags`".
#
# Sample usage:
#
#   SET(WXWIDGETS_USE_LIBS base core gl net)
#   FIND_PACKAGE(wxWidgets)
#   IF(WXWIDGETS_FOUND)
#     MESSAGE(STATUS "Found wxWidgets!")
#     IF(WIN32)
#       INCLUDE_DIRECTORIES(${WXWIDGETS_INCLUDE_DIR})
#     ELSE(WIN32)
#       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WXWIDGETS_CXX_FLAGS}")
#       LINK_DIRECTORIES(${WXWIDGETS_LINK_DIRECTORIES})
#     ENDIF(WIN32)
#     TARGET_LINK_LIBRARIES(target ${WXWIDGETS_LIBRARIES})
#   ENDIF(WXWIDGETS_FOUND)
#
# NOTES
#
#   This module has been tested on the WIN32 platform with wxWidgets
#   2.6.2, 2.6.3, and 2.5.3. However, it has been designed to be easily
#   extended to support all possible builds (e.g., static/shared,
#   debug/release, unicode, universal, multilib/monolithic, etc.).
#
#   If you want to use the module and your build type is not supported
#   out-of-the-box, please contact me to exchange information on how
#   your system is setup and I'll try to add support for it.
#
# AUTHOR
#   Miguel A. Figueroa-Villanueva (miguelf at ieee dot org).
#
#   Based on previous works of: Jan Woetzel (FindwxWindows.cmake),
#   and Jorgen Bodde (FindwxWin.cmake).

#
# Helper macro to control the debugging output globally.
# - NOTE: This and all the DBG_MSG calls should be removed after the
#         module stabilizes.
#
MACRO(DBG_MSG _MSG)
#  MESSAGE(STATUS ${_MSG})
ENDMACRO(DBG_MSG)

#
# Clear return values in case the module is loaded more than once.
#
SET(WXWIDGETS_FOUND FALSE)
#
SET(WXWIDGETS_INCLUDE_DIR      "")
SET(WXWIDGETS_LIBRARIES        "")
SET(WXWIDGETS_LINK_DIRECTORIES "")
SET(WXWIDGETS_CXX_FLAGS        "")

#=====================================================================
#=====================================================================
IF(WIN32)

#---------------------------------------------------------------------
# WIN32: Helper MACROS
#---------------------------------------------------------------------
#
# Get filename components for a configuration. For example,
#   if _CONFIGURATION = mswunivud, then _UNV=univ, _UCD=u _DBG=d
#   if _CONFIGURATION = mswu,      then _UNV="",   _UCD=u _DBG=""
#
MACRO(WX_GET_NAME_COMPONENTS _CONFIGURATION _UNV _UCD _DBG)
 STRING(REGEX MATCH "univ" ${_UNV} "${_CONFIGURATION}")
 STRING(REGEX REPLACE "msw.*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}")
 IF(${_UCD} STREQUAL ${_CONFIGURATION})
   SET(${_UCD} "")
 ENDIF(${_UCD} STREQUAL ${_CONFIGURATION})
 STRING(REGEX MATCH "d$" ${_DBG} "${_CONFIGURATION}")
ENDMACRO(WX_GET_NAME_COMPONENTS)

#
# Find libraries associated to a configuration.
#
MACRO(WX_FIND_LIBS _UNV _UCD _DBG)
 DBG_MSG("m_unv = ${_UNV}")
 DBG_MSG("m_ucd = ${_UCD}")
 DBG_MSG("m_dbg = ${_DBG}")

 # Find wxWidgets common libraries
 FOREACH(LIB png tiff jpeg zlib regex expat)
   FIND_LIBRARY(WX_${LIB}${_DBG}
     NAMES
       wx${LIB}${_UCD}${_DBG} # for regex
       wx${LIB}${_DBG}
     PATHS ${WX_LIB_DIR}
     NO_DEFAULT_PATH
   )
   MARK_AS_ADVANCED(WX_${LIB}${_DBG})
 ENDFOREACH(LIB)

 # Find wxWidgets multilib base libraries
 FIND_LIBRARY(WX_base${_DBG}
   NAMES
     wxbase26${_UCD}${_DBG}
     wxbase25${_UCD}${_DBG}
   PATHS ${WX_LIB_DIR}
   NO_DEFAULT_PATH
 )
 MARK_AS_ADVANCED(WX_base${_DBG})
 FOREACH(LIB net odbc xml)
   FIND_LIBRARY(WX_${LIB}${_DBG}
     NAMES
       wxbase26${_UCD}${_DBG}_${LIB}
       wxbase25${_UCD}${_DBG}_${LIB}
     PATHS ${WX_LIB_DIR}
     NO_DEFAULT_PATH
   )
   MARK_AS_ADVANCED(WX_${LIB}${_DBG})
 ENDFOREACH(LIB)

 # Find wxWidgets monolithic library
 FIND_LIBRARY(WX_mono${_DBG}
   NAMES
     wxmsw${_UNV}26${_UCD}${_DBG}
     wxmsw${_UNV}25${_UCD}${_DBG}
   PATHS ${WX_LIB_DIR}
   NO_DEFAULT_PATH
 )
 MARK_AS_ADVANCED(WX_mono${_DBG})

 # Find wxWidgets multilib libraries
 FOREACH(LIB core adv html media xrc dbgrid gl qa)
   FIND_LIBRARY(WX_${LIB}${_DBG}
     NAMES
       wxmsw${_UNV}26${_UCD}${_DBG}_${LIB}
       wxmsw${_UNV}25${_UCD}${_DBG}_${LIB}
     PATHS ${WX_LIB_DIR}
     NO_DEFAULT_PATH
   )
   MARK_AS_ADVANCED(WX_${LIB}${_DBG})
 ENDFOREACH(LIB)
ENDMACRO(WX_FIND_LIBS)

#
# Clear all library paths, so that FIND_LIBRARY refinds them.
#
# Clear a lib, reset its found flag, and mark as advanced.
MACRO(WX_CLEAR_LIB _LIB)
   SET(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE)
   SET(${_LIB}_FOUND FALSE)
   MARK_AS_ADVANCED(${_LIB})
ENDMACRO(WX_CLEAR_LIB)
# Clear all debug or release library paths (arguments are "d" or "").
MACRO(WX_CLEAR_ALL_LIBS _DBG)
 # Clear wxWidgets common libraries
 FOREACH(LIB png tiff jpeg zlib regex expat)
   WX_CLEAR_LIB(WX_${LIB}${_DBG})
 ENDFOREACH(LIB)

 # Clear wxWidgets multilib base libraries
 WX_CLEAR_LIB(WX_base${_DBG})
 FOREACH(LIB net odbc xml)
   WX_CLEAR_LIB(WX_${LIB}${_DBG})
 ENDFOREACH(LIB)

 # Clear wxWidgets monolithic library
 WX_CLEAR_LIB(WX_mono${_DBG})

 # Clear wxWidgets multilib libraries
 FOREACH(LIB core adv html media xrc dbgrid gl qa)
   WX_CLEAR_LIB(WX_${LIB}${_DBG})
 ENDFOREACH(LIB)
ENDMACRO(WX_CLEAR_ALL_LIBS)
# Clear all wxWidgets debug libraries.
MACRO(WX_CLEAR_ALL_DBG_LIBS)
  WX_CLEAR_ALL_LIBS("d")
ENDMACRO(WX_CLEAR_ALL_DBG_LIBS)
# Clear all wxWidgets release libraries.
MACRO(WX_CLEAR_ALL_REL_LIBS)
  WX_CLEAR_ALL_LIBS("")
ENDMACRO(WX_CLEAR_ALL_REL_LIBS)

#
# Set the WXWIDGETS_LIBRARIES variable.
# Also, Sets output variable WXWIDGETS_FOUND to FALSE if it fails.
#
MACRO(WX_SET_LIBRARIES _LIBS _DBG)
 IF(WX_USE_REL_AND_DBG)
   FOREACH(LIB ${${_LIBS}})
     DBG_MSG("Finding ${LIB} and ${LIB}d")
     DBG_MSG("WX_${LIB}  : ${WX_${LIB}}")
     DBG_MSG("WX_${LIB}d : ${WX_${LIB}d}")
     IF(WX_${LIB} AND WX_${LIB}d)
       DBG_MSG("Found ${LIB} and ${LIB}d")
       SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}
           debug     ${WX_${LIB}d}
           optimized ${WX_${LIB}}
       )
     ELSE(WX_${LIB} AND WX_${LIB}d)
       SET(WXWIDGETS_FOUND FALSE)
     ENDIF(WX_${LIB} AND WX_${LIB}d)
   ENDFOREACH(LIB)
 ELSE(WX_USE_REL_AND_DBG)
   FOREACH(LIB ${${_LIBS}})
     DBG_MSG("Finding ${LIB}${_DBG}")
     DBG_MSG("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
     IF(WX_${LIB}${_DBG})
       DBG_MSG("Found ${LIB}${_DBG}")
       SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}
           ${WX_${LIB}${_DBG}}
       )
     ELSE(WX_${LIB}${_DBG})
       SET(WXWIDGETS_FOUND FALSE)
     ENDIF(WX_${LIB}${_DBG})
   ENDFOREACH(LIB)
 ENDIF(WX_USE_REL_AND_DBG)

 FOREACH(LIB ${${_LIBS}})
   DBG_MSG("required: ${LIB}")
   IF(LIB STREQUAL "gl")
     DBG_MSG("gl required: ${LIB}")

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?