findwxwidgets.cmake

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

CMAKE
486
字号
     SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}
       opengl32
       glu32
     )
   ENDIF(LIB STREQUAL "gl")
 ENDFOREACH(LIB ${${_LIBS}})

 SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}
   winmm
   comctl32
   rpcrt4
   wsock32
 )
ENDMACRO(WX_SET_LIBRARIES)

#---------------------------------------------------------------------
# WIN32: Start actual work.
#---------------------------------------------------------------------
#
# Look for an installation tree.
#
FIND_PATH(WXWIDGETS_ROOT_DIR include/wx/wx.h
   $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
   C:\\wxWidgets-2.6.3
   D:\\wxWidgets-2.6.3
   C:\\wxWidgets-2.6.2
   D:\\wxWidgets-2.6.2
   C:\\wxWidgets-2.6.1
   D:\\wxWidgets-2.6.1
   C:\\wxWidgets-2.6.0
   D:\\wxWidgets-2.6.0
   C:\\wxWidgets-2.5.5
   D:\\wxWidgets-2.5.5
   C:\\wxWidgets-2.5.4
   D:\\wxWidgets-2.5.4
   C:\\wxWidgets-2.5.3
   D:\\wxWidgets-2.5.3
   C:\\wxWidgets-2.5.2
   D:\\wxWidgets-2.5.2
   C:\\wxWidgets-2.5.1
   D:\\wxWidgets-2.5.1
#   C:\\wxWindows-2.4.2
#   D:\\wxWindows-2.4.2
  DOC "wxWidgets base/installation directory?"
)
DBG_MSG("WXWIDGETS_ROOT_DIR: ${WXWIDGETS_ROOT_DIR}")

# If WXWIDGETS_ROOT_DIR changed, clear all libraries and lib dir.
IF(NOT WX_ROOT_DIR STREQUAL WXWIDGETS_ROOT_DIR)
  SET(WX_ROOT_DIR ${WXWIDGETS_ROOT_DIR} CACHE INTERNAL "WXWIDGETS_ROOT_DIR")
#  WX_CLEAR_ALL_DBG_LIBS()
#  WX_CLEAR_ALL_REL_LIBS()
  SET(WXWIDGETS_LIB_DIR "WXWIDGETS_LIB_DIR-NOTFOUND" CACHE PATH "Cleared." FORCE)
ENDIF(NOT WX_ROOT_DIR STREQUAL WXWIDGETS_ROOT_DIR)
DBG_MSG("WX_ROOT_DIR: ${WX_ROOT_DIR}")

IF(WX_ROOT_DIR)

# *** Temporary hack for cmake 2.2-patch3 and older.
#     FIND_PATH(<VAR> NAMES ... PATHS ...) not available
# ***
#FIND_PATH(WXWIDGETS_LIB_DIR
#  NAMES wxpng.lib wxpngd.lib
#  PATHS
#  ${WX_ROOT_DIR}/lib/vc_lib
#  ${WX_ROOT_DIR}/lib/vc_dll
#  NO_DEFAULT_PATH
#)
IF(NOT WXWIDGETS_LIB_DIR AND EXISTS ${WX_ROOT_DIR}/lib/vc_lib)
  SET(WXWIDGETS_LIB_DIR ${WX_ROOT_DIR}/lib/vc_lib CACHE PATH "Path to wxWidgets libraries." FORCE)
ENDIF(NOT WXWIDGETS_LIB_DIR AND EXISTS ${WX_ROOT_DIR}/lib/vc_lib)
IF(NOT WXWIDGETS_LIB_DIR AND EXISTS ${WX_ROOT_DIR}/lib/vc_dll)
  SET(WXWIDGETS_LIB_DIR ${WX_ROOT_DIR}/lib/vc_dll CACHE PATH "Path to wxWidgets libraries." FORCE)
ENDIF(NOT WXWIDGETS_LIB_DIR AND EXISTS ${WX_ROOT_DIR}/lib/vc_dll)
DBG_MSG("WXWIDGETS_LIB_DIR: ${WXWIDGETS_LIB_DIR}")

# If WXWIDGETS_LIB_DIR changed, clear all libraries.
IF(NOT WX_LIB_DIR STREQUAL WXWIDGETS_LIB_DIR)
  SET(WX_LIB_DIR ${WXWIDGETS_LIB_DIR} CACHE INTERNAL "WXWIDGETS_LIB_DIR")
  WX_CLEAR_ALL_DBG_LIBS()
  WX_CLEAR_ALL_REL_LIBS()
ENDIF(NOT WX_LIB_DIR STREQUAL WXWIDGETS_LIB_DIR)
DBG_MSG("WX_LIB_DIR: ${WX_LIB_DIR}")

IF(WX_LIB_DIR)
  SET(WXWIDGETS_FOUND TRUE)

#---------------------------------------------------------------------
# WIN32: ???
#---------------------------------------------------------------------
# Search for possible configuration type availabilities
# ***** SET(WX_LAST_CFG "")
FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw)
  SET(WX_${CFG}_FOUND FALSE)
  IF(EXISTS ${WX_LIB_DIR}/${CFG})
    SET(WX_CONFIGURATION_LIST ${WX_CONFIGURATION_LIST} ${CFG})
    SET(WX_${CFG}_FOUND TRUE)
    SET(WX_CONFIGURATION ${CFG})
  ENDIF(EXISTS ${WX_LIB_DIR}/${CFG})
ENDFOREACH(CFG)

# ***** SET(WX_USE_REL_AND_DBG FALSE)
IF(WX_CONFIGURATION)
  # if selected configuration wasn't found, force the default one
  # else, use it but still force a refresh for the list in doc string
  IF(NOT WX_${WXWIDGETS_CONFIGURATION}_FOUND)
    SET(WXWIDGETS_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
        "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
  ELSE(NOT WX_${WXWIDGETS_CONFIGURATION}_FOUND)
    SET(WXWIDGETS_CONFIGURATION ${WXWIDGETS_CONFIGURATION} CACHE STRING
        "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
  ENDIF(NOT WX_${WXWIDGETS_CONFIGURATION}_FOUND)

  # if release config was selected, and both release/debug exist
  IF(WX_${WXWIDGETS_CONFIGURATION}d_FOUND)
    OPTION(WXWIDGETS_USE_REL_AND_DBG
           "Use release and debug configurations?" TRUE)
    SET(WX_USE_REL_AND_DBG ${WXWIDGETS_USE_REL_AND_DBG})
  ELSE(WX_${WXWIDGETS_CONFIGURATION}d_FOUND)
    # if the option exists, force it to false
    IF(WXWIDGETS_USE_REL_AND_DBG)
      SET(WXWIDGETS_USE_REL_AND_DBG FALSE CACHE BOOL
          "No ${WXWIDGETS_CONFIGURATION}d found." FORCE)
    ENDIF(WXWIDGETS_USE_REL_AND_DBG)
    SET(WX_USE_REL_AND_DBG FALSE)
  ENDIF(WX_${WXWIDGETS_CONFIGURATION}d_FOUND)

  # Get configuration parameters from the name.
  WX_GET_NAME_COMPONENTS(${WXWIDGETS_CONFIGURATION} UNV UCD DBG)

  # Set wxWidgets main include directory.
  IF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
    SET(WXWIDGETS_INCLUDE_DIR ${WX_ROOT_DIR}/include)
  ELSE(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
    SET(WXWIDGETS_FOUND FALSE)
  ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)

  # Set wxWidgets lib setup include directory.
  IF(EXISTS ${WX_LIB_DIR}/${WXWIDGETS_CONFIGURATION}/wx/setup.h)
    SET(WXWIDGETS_INCLUDE_DIR ${WXWIDGETS_INCLUDE_DIR}
        ${WX_LIB_DIR}/${WXWIDGETS_CONFIGURATION})
  ELSE(EXISTS ${WX_LIB_DIR}/${WXWIDGETS_CONFIGURATION}/wx/setup.h)
    SET(WXWIDGETS_FOUND FALSE)
  ENDIF(EXISTS ${WX_LIB_DIR}/${WXWIDGETS_CONFIGURATION}/wx/setup.h)
  #FIND_PATH(WX_SETUP_INCLUDE_DIR wx/setup.h
  #          ${WX_LIB_DIR}/${WXWIDGETS_CONFIGURATION})
  #MARK_AS_ADVANCED(WX_SETUP_INCLUDE_DIR)

  # Find wxWidgets libraries.
  WX_FIND_LIBS("${UNV}" "${UCD}" "${DBG}")
  IF(WX_USE_REL_AND_DBG)
    WX_FIND_LIBS("${UNV}" "${UCD}" "d")
  ENDIF(WX_USE_REL_AND_DBG)

  # Libraries we are interested in.
  IF(WXWIDGETS_USE_LIBS)
    # Add the common required libs.
    SET(WXWIDGETS_USE_LIBS ${WXWIDGETS_USE_LIBS}
        png tiff jpeg zlib regex expat
    )
  ELSE(WXWIDGETS_USE_LIBS)
    # Default minimal use setting (i.e., link to only core and base).
    SET(WXWIDGETS_USE_LIBS base core
        png tiff jpeg zlib regex expat
    )
  ENDIF(WXWIDGETS_USE_LIBS)

  # Settings for requested libs (i.e., include dir, libraries, etc.).
  WX_SET_LIBRARIES(WXWIDGETS_USE_LIBS "${DBG}")

ENDIF(WX_CONFIGURATION)
ENDIF(WX_LIB_DIR)
ENDIF(WX_ROOT_DIR)


#=====================================================================
#=====================================================================
ELSE(WIN32)
  FIND_PROGRAM(WXWIDGETS_CONFIG_EXE wx-config)
  IF(WXWIDGETS_CONFIG_EXE)
    SET(WXWIDGETS_FOUND TRUE)

    # run the wx-config program to get cxxflags
    EXEC_PROGRAM(${WXWIDGETS_CONFIG_EXE}
                 ARGS "--cxxflags"
                 OUTPUT_VARIABLE WXWIDGETS_CXX_FLAGS
                 RETURN_VALUE RET)
    IF(NOT RET EQUAL 0)
      SET(WXWIDGETS_FOUND FALSE)
    ENDIF(NOT RET EQUAL 0)
    
    # run the wx-config program to get the libs
    # - NOTE: wx-config doesn't verify that the libs requested exist
    #         it just produces the names. Maybe a TRY_COMPILE would
    #         be useful here...
    #STRING(REPLACE ";" "," WXWIDGETS_USE_LIBS "${WXWIDGETS_USE_LIBS}")
    STRING(REGEX REPLACE ";" "," WXWIDGETS_USE_LIBS "${WXWIDGETS_USE_LIBS}")
    DBG_MSG(${WXWIDGETS_USE_LIBS})
    EXEC_PROGRAM(${WXWIDGETS_CONFIG_EXE}
                 ARGS "--libs ${WXWIDGETS_USE_LIBS}"
                 OUTPUT_VARIABLE WXWIDGETS_LIBRARIES
                 RETURN_VALUE RET)
    IF(RET EQUAL 0)
      SEPARATE_ARGUMENTS(WXWIDGETS_LIBRARIES)
      STRING(REGEX REPLACE "-framework;" "-framework "
             WXWIDGETS_LIBRARIES
             "${WXWIDGETS_LIBRARIES}")

      # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES)
      STRING(REGEX MATCHALL "[-][L][^ ;]+"
             WXWIDGETS_LINK_DIRECTORIES
             "${WXWIDGETS_LIBRARIES}")
      STRING(REGEX REPLACE "[-][L]" ""
             WXWIDGETS_LINK_DIRECTORIES
             "${WXWIDGETS_LINK_DIRECTORIES}")
    ELSE(RET EQUAL 0)
      SET(WXWIDGETS_FOUND FALSE)
    ENDIF(RET EQUAL 0)
  ENDIF(WXWIDGETS_CONFIG_EXE)
ENDIF(WIN32)

DBG_MSG("WXWIDGETS_FOUND      : ${WXWIDGETS_FOUND}"      )
DBG_MSG("WXWIDGETS_INCLUDE_DIR: ${WXWIDGETS_INCLUDE_DIR}")
DBG_MSG("WXWIDGETS_LIBRARIES  : ${WXWIDGETS_LIBRARIES}"  )
DBG_MSG("WXWIDGETS_LINK_DIRECTORIES: ${WXWIDGETS_LINK_DIRECTORIES}")
DBG_MSG("WXWIDGETS_CXX_FLAGS       : ${WXWIDGETS_CXX_FLAGS}"       )

#=====================================================================
#=====================================================================
IF(NOT WXWIDGETS_FOUND)
  # make FIND_PACKAGE friendly
  IF(NOT wxWidgets_FIND_QUIETLY)
    IF(wxWidgets_FIND_REQUIRED)
      MESSAGE(FATAL_ERROR
              "wxWidgets required, please specify it's location.")
    ELSE(wxWidgets_FIND_REQUIRED)
      MESSAGE(STATUS "Warning: wxWidgets was not found.")
    ENDIF(wxWidgets_FIND_REQUIRED)
  ENDIF(NOT wxWidgets_FIND_QUIETLY)
ENDIF(NOT WXWIDGETS_FOUND)

⌨️ 快捷键说明

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