Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CMake中获取wxWidgets的版本_Cmake_Wxwidgets - Fatal编程技术网

在CMake中获取wxWidgets的版本

在CMake中获取wxWidgets的版本,cmake,wxwidgets,Cmake,Wxwidgets,我试图确定CMake找到的wxWidgets版本是否>=2.9。我试过这个: find_package(wxWidgets 2.9 COMPONENTS core base REQUIRED) if(wxWidgets_FOUND) message("wxWidgets found successfully.") include( ${wxWidgets_USE_FILE} ) else() message(FATAL_ERROR "wxWidgets was not found!"

我试图确定CMake找到的wxWidgets版本是否>=2.9。我试过这个:

find_package(wxWidgets 2.9 COMPONENTS core base REQUIRED)
if(wxWidgets_FOUND)
  message("wxWidgets found successfully.")
  include( ${wxWidgets_USE_FILE} )
else()
  message(FATAL_ERROR "wxWidgets was not found!")
endif()

if(wxWidgets_VERSION LESS 2.9)
  message(FATAL_ERROR "wxWidgets is not a high enough version!")
else()
  message("wxWidgets Version ${wxWidgets_VERSION}")
  message("wxWidgets Major version ${wxMAJOR_VERSION}")
  message("release number ${wxRELEASE_NUMBER}")
  message("check version ${wxCHECK_VERSION}")
  message("wxWidgets version ${WX_WIDGETS_VERSION}")
  message("wxWidgets major version ${WX_MAJOR_VERSION}")
  message("wxWidgets version string ${WX_VERSION_STRING}")
endif()
(我的系统有wx2.8,因此应该失败)

if(wxWidgets_-find)返回TRUE,到目前为止还不错。但是,if(wxWidgets_版本小于2.9)失败,但这并不是因为wxWidgets_版本小于2.9。这是因为wxu版本是空的。事实上,整个输出是:

wxWidgets Version 
wxWidgets Major version 
release number 
check version 
wxWidgets version 
wxWidgets major version 
wxWidgets version string 
(即所有变量均为空)

有人知道通过CMake检查wxWidgets版本的正确方法吗

谢谢


David

有人建议了一个名为wxArt2d的项目,它有一个更好的wxWidgets cmake。不幸的是,这些东西没有更容易/更好地维护:(

有人建议一个名为wxArt2d的项目,它有一个更好的wxWidgets制作。不幸的是,这些东西没有更容易/更好地维护:(

打开终端并写入

wx-config --version

打开终端并写入

wx-config --version
在我的Ubuntu 18.04.2 LTS上 CMake命令:

find_package(wxWidgets REQUIRED)
调用宏:

/usr/share/cmake-3.10/Modules/FindwxWidgets.cmake
其中设置了以下变量:

wxWidgets_VERSION_STRING   # 3.0.4
wxWidgets_VERSION_MAJOR    # 3
wxWidgets_VERSION_MINOR    # 0
wxWidgets_VERSION_PATCH    # 4
因此,以下代码检查版本:

find_package(wxWidgets REQUIRED)
include(${wxWidgets_USE_FILE})

if (wxWidgets_VERSION_STRING LESS 2.9)
    message("Version < 2.9")
endif()

# Or
if (wxWidgets_VERSION_STRING GREATER_EQUAL 2.9)
    message("Version >= 2.9")
endif()
find_包(需要wxWidgets)
包括(${wxWidgets\u USE\u FILE})
if(wxWidgets\u版本\u字符串小于2.9)
信息(“版本<2.9”)
endif()
#或
if(wxWidgets_版本_字符串大于等于2.9)
消息(“版本>=2.9”)
endif()
在我的Ubuntu 18.04.2 LTS上 CMake命令:

find_package(wxWidgets REQUIRED)
调用宏:

/usr/share/cmake-3.10/Modules/FindwxWidgets.cmake
其中设置了以下变量:

wxWidgets_VERSION_STRING   # 3.0.4
wxWidgets_VERSION_MAJOR    # 3
wxWidgets_VERSION_MINOR    # 0
wxWidgets_VERSION_PATCH    # 4
因此,以下代码检查版本:

find_package(wxWidgets REQUIRED)
include(${wxWidgets_USE_FILE})

if (wxWidgets_VERSION_STRING LESS 2.9)
    message("Version < 2.9")
endif()

# Or
if (wxWidgets_VERSION_STRING GREATER_EQUAL 2.9)
    message("Version >= 2.9")
endif()
find_包(需要wxWidgets)
包括(${wxWidgets\u USE\u FILE})
if(wxWidgets\u版本\u字符串小于2.9)
信息(“版本<2.9”)
endif()
#或
if(wxWidgets_版本_字符串大于等于2.9)
消息(“版本>=2.9”)
endif()

检查FindWxWidgets.cmake模块。我不知道您使用的是哪一个模块,但是,例如,wxversion中只定义了Windows(我想这不是您喜欢的方式)还有一个版本没有定义。我认为为wx提供的查找脚本没有得到很好的维护。因此,您可能需要根据自己的情况修改一个。请检查FindWxWidgets.cmake模块。我不知道您使用的是哪一个模块,但是,例如,在wxversion中,它只为Windows定义(我想这不是您喜欢的方式)在一个版本中没有定义。我认为为wx提供的查找脚本没有得到很好的维护。因此,您可能需要根据您的情况修改一个。这对在CMake中获取版本有何帮助?这对在CMake中获取版本有何帮助?