findwxwidgets.cmake
来自「编译器」· CMAKE 代码 · 共 970 行 · 第 1/3 页
CMAKE
970 行
# Clear wxWidgets multilib libraries.
FOREACH(LIB core adv aui 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)
DBG_MSG_V("Looking for ${${_LIBS}}")
IF(WX_USE_REL_AND_DBG)
FOREACH(LIB ${${_LIBS}})
DBG_MSG_V("Searching for ${LIB} and ${LIB}d")
DBG_MSG_V("WX_${LIB} : ${WX_${LIB}}")
DBG_MSG_V("WX_${LIB}d : ${WX_${LIB}d}")
IF(WX_${LIB} AND WX_${LIB}d)
DBG_MSG_V("Found ${LIB} and ${LIB}d")
LIST(APPEND wxWidgets_LIBRARIES
debug ${WX_${LIB}d} optimized ${WX_${LIB}}
)
ELSE(WX_${LIB} AND WX_${LIB}d)
DBG_MSG_V("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${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_V("Searching for ${LIB}${_DBG}")
DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
IF(WX_${LIB}${_DBG})
DBG_MSG_V("Found ${LIB}${_DBG}")
LIST(APPEND wxWidgets_LIBRARIES ${WX_${LIB}${_DBG}})
ELSE(WX_${LIB}${_DBG})
DBG_MSG_V(
"- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
SET(wxWidgets_FOUND FALSE)
ENDIF(WX_${LIB}${_DBG})
ENDFOREACH(LIB)
ENDIF(WX_USE_REL_AND_DBG)
DBG_MSG_V("OpenGL")
LIST(FIND ${_LIBS} gl WX_USE_GL)
IF(NOT WX_USE_GL EQUAL -1)
DBG_MSG_V("- is required.")
LIST(APPEND wxWidgets_LIBRARIES opengl32 glu32)
ENDIF(NOT WX_USE_GL EQUAL -1)
LIST(APPEND wxWidgets_LIBRARIES winmm comctl32 rpcrt4 wsock32)
ENDMACRO(WX_SET_LIBRARIES)
#-------------------------------------------------------------------
# WIN32: Start actual work.
#-------------------------------------------------------------------
# Look for an installation tree.
FIND_PATH(wxWidgets_ROOT_DIR
NAMES include/wx/wx.h
PATHS
$ENV{wxWidgets_ROOT_DIR}
$ENV{WXWIN}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" # WX 2.6.x
C:/
D:/
$ENV{ProgramFiles}
PATH_SUFFIXES
wxWidgets-2.8.7
wxWidgets-2.8.6
wxWidgets-2.8.5
wxWidgets-2.8.4
wxWidgets-2.8.3
wxWidgets-2.8.2
wxWidgets-2.8.1
wxWidgets-2.8.0
wxWidgets-2.7.4
wxWidgets-2.7.3
wxWidgets-2.7.2
wxWidgest-2.7.1
wxWidgets-2.7.0
wxWidgets-2.7.0-1
wxWidgets-2.6.3
wxWidgets-2.6.2
wxWidgets-2.6.1
wxWidgets-2.5.4
wxWidgets-2.5.3
wxWidgets-2.5.2
wxWidgets-2.5.1
wxWidgets
DOC "wxWidgets base/installation directory?"
)
# If wxWidgets_ROOT_DIR changed, clear lib dir.
IF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
SET(WX_ROOT_DIR ${wxWidgets_ROOT_DIR}
CACHE INTERNAL "wxWidgets_ROOT_DIR")
SET(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND"
CACHE PATH "Cleared." FORCE)
ENDIF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
IF(WX_ROOT_DIR)
# Select one default tree inside the already determined wx tree.
# Prefer static/shared order usually consistent with build
# settings.
IF(BUILD_SHARED_LIBS)
FIND_PATH(wxWidgets_LIB_DIR
NAMES wxpng.lib wxpngd.lib
PATHS
${WX_ROOT_DIR}/lib/vc_dll # prefer shared
${WX_ROOT_DIR}/lib/vc_lib
DOC "Path to wxWidgets libraries?"
NO_DEFAULT_PATH
)
ELSE(BUILD_SHARED_LIBS)
FIND_PATH(wxWidgets_LIB_DIR
NAMES wxpng.lib wxpngd.lib
PATHS
${WX_ROOT_DIR}/lib/vc_lib # prefer static
${WX_ROOT_DIR}/lib/vc_dll
DOC "Path to wxWidgets libraries?"
NO_DEFAULT_PATH
)
ENDIF(BUILD_SHARED_LIBS)
# 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)
IF(WX_LIB_DIR)
SET(wxWidgets_FOUND TRUE)
# If building shared libs, define WXUSINGDLL to use dllimport.
IF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
SET(wxWidgets_DEFINITIONS "-DWXUSINGDLL")
DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
# Search for available configuration types.
FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw)
SET(WX_${CFG}_FOUND FALSE)
IF(EXISTS ${WX_LIB_DIR}/${CFG})
LIST(APPEND WX_CONFIGURATION_LIST ${CFG})
SET(WX_${CFG}_FOUND TRUE)
SET(WX_CONFIGURATION ${CFG})
ENDIF(EXISTS ${WX_LIB_DIR}/${CFG})
ENDFOREACH(CFG)
DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
IF(WX_CONFIGURATION)
# If the selected configuration wasn't found force the default
# one. Otherwise, use it but still force a refresh for
# updating the doc string with the current list of available
# configurations.
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 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 (already in cache), force it 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_DIRS ${WX_ROOT_DIR}/include)
ELSE(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
DBG_MSG("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${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)
LIST(APPEND wxWidgets_INCLUDE_DIRS
${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
ELSE(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
DBG_MSG("WXWIDGET_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
SET(wxWidgets_FOUND FALSE)
ENDIF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
# 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)
# Settings for requested libs (i.e., include dir, libraries, etc.).
WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}")
ENDIF(WX_CONFIGURATION)
ENDIF(WX_LIB_DIR)
ENDIF(WX_ROOT_DIR)
#=====================================================================
# UNIX_STYLE_FIND
#=====================================================================
ELSE(WIN32_STYLE_FIND)
IF(UNIX_STYLE_FIND)
#-----------------------------------------------------------------
# UNIX: Helper MACROS
#-----------------------------------------------------------------
#
# Set the default values based on "wx-config --selected-config".
#
MACRO(WX_CONFIG_SELECT_GET_DEFAULT)
EXECUTE_PROCESS(
COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" --selected-config
OUTPUT_VARIABLE _wx_selected_config
RESULT_VARIABLE _wx_result
ERROR_QUIET
)
IF(_wx_result EQUAL 0)
FOREACH(_opt_name debug static unicode universal)
STRING(TOUPPER ${_opt_name} _upper_opt_name)
IF(_wx_selected_config MATCHES ".*${_opt_name}.*")
SET(wxWidgets_DEFAULT_${_upper_opt_name} ON)
ELSE(_wx_selected_config MATCHES ".*${_opt_name}.*")
SET(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
ENDIF(_wx_selected_config MATCHES ".*${_opt_name}.*")
ENDFOREACH(_opt_name)
ELSE(_wx_result EQUAL 0)
FOREACH(_upper_opt_name DEBUG STATIC UNICODE UNIVERSAL)
SET(wxWidgets_DEFAULT_${_upper_opt_name} OFF)
ENDFOREACH(_opt_name)
ENDIF(_wx_result EQUAL 0)
ENDMACRO(WX_CONFIG_SELECT_GET_DEFAULT)
#
# Query a boolean configuration option to determine if the system
# has both builds available. If so, provide the selection option
# to the user.
#
MACRO(WX_CONFIG_SELECT_QUERY_BOOL _OPT_NAME _OPT_HELP)
EXECUTE_PROCESS(
COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" --${_OPT_NAME}=yes
RESULT_VARIABLE _wx_result_yes
OUTPUT_QUIET
ERROR_QUIET
)
EXECUTE_PROCESS(
COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" --${_OPT_NAME}=no
RESULT_VARIABLE _wx_result_no
OUTPUT_QUIET
ERROR_QUIET
)
STRING(TOUPPER ${_OPT_NAME} _UPPER_OPT_NAME)
IF(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
OPTION(wxWidgets_USE_${_UPPER_OPT_NAME}
${_OPT_HELP} ${wxWidgets_DEFAULT_${_UPPER_OPT_NAME}})
ELSE(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
# If option exists (already in cache), force to available one.
IF(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME})
IF(_wx_result_yes EQUAL 0)
SET(wxWidgets_USE_${_UPPER_OPT_NAME} ON CACHE BOOL ${_OPT_HELP} FORCE)
ELSE(_wx_result_yes EQUAL 0)
SET(wxWidgets_USE_${_UPPER_OPT_NAME} OFF CACHE BOOL ${_OPT_HELP} FORCE)
ENDIF(_wx_result_yes EQUAL 0)
ENDIF(DEFINED wxWidgets_USE_${_UPPER_OPT_NAME})
ENDIF(_wx_result_yes EQUAL 0 AND _wx_result_no EQUAL 0)
ENDMACRO(WX_CONFIG_SELECT_QUERY_BOOL)
#
# Set wxWidgets_SELECT_OPTIONS to wx-config options for selecting
# among multiple builds.
#
MACRO(WX_CONFIG_SELECT_SET_OPTIONS)
SET(wxWidgets_SELECT_OPTIONS "")
FOREACH(_opt_name debug static unicode universal)
STRING(TOUPPER ${_opt_name} _upper_opt_name)
IF(DEFINED wxWidgets_USE_${_upper_opt_name})
IF(wxWidgets_USE_${_upper_opt_name})
LIST(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=yes)
ELSE(wxWidgets_USE_${_upper_opt_name})
LIST(APPEND wxWidgets_SELECT_OPTIONS --${_opt_name}=no)
ENDIF(wxWidgets_USE_${_upper_opt_name})
ENDIF(DEFINED wxWidgets_USE_${_upper_opt_name})
ENDFOREACH(_opt_name)
ENDMACRO(WX_CONFIG_SELECT_SET_OPTIONS)
#-----------------------------------------------------------------
# UNIX: Start actual work.
#-----------------------------------------------------------------
# Support cross-compiling, only search in the target platform.
FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE wx-config
ONLY_CMAKE_FIND_ROOT_PATH
)
IF(wxWidgets_CONFIG_EXECUTABLE)
SET(wxWidgets_FOUND TRUE)
# get defaults based on "wx-config --selected-config"
WX_CONFIG_SELECT_GET_DEFAULT()
# for each option: if both builds are available, provide option
WX_CONFIG_SELECT_QUERY_BOOL(debug "Use debug build?")
WX_CONFIG_SELECT_QUERY_BOOL(unicode "Use unicode build?")
WX_CONFIG_SELECT_QUERY_BOOL(universal "Use universal build?")
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?