使用 CMake 强制 wxWidgets 2.x

Force wxWidgets 2.x with CMake

我正在编译一个 Code::Blocks 插件。由于与 wxWidgets 3.0 不兼容,Code::Blocks 是针对 wxWidgets 2.8 编译的。

插件的 CMakeLists.txt 是:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(cbvike)

SET(VERSION_SERIES 0)
SET(VERSION_MAJOR 2)
SET(VERSION_MINOR 1)

FIND_PACKAGE(wxWidgets REQUIRED)

INCLUDE_DIRECTORIES(${wxWidgets_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(/usr/include/codeblocks)
INCLUDE_DIRECTORIES(/usr/include/codeblocks/wxscintilla/include)

ADD_DEFINITIONS(-D __WXGTK__)
ADD_DEFINITIONS(-D __linux__)
ADD_DEFINITIONS(-std=c++11)

这发现 wxgtk 3.0 导致了一些问题。我正在使用 Arch,所以我不能只删除 wxgtk 3.0 的开发包 - headers 已经捆绑了。

如何在 CMake 中强制使用 wxgtk 2.x?

好吧,我曾经尝试制作一个兼容的 2.x/3.x wxWidgets 系列......我从来没有发现它是否有效......所以告诉我它是否按预期工作:

# Look for wxwidgets
list (APPEND _COMP adv core base)
if (UNIX)
    set (TOOLKIT_VERSION_NEED "3.0") # change here to desired version
    set (wxWidgets_CONFIG_OPTIONS --version=${TOOLKIT_VERSION_NEED})
endif ()
find_package (wxWidgets COMPONENTS ${_COMP})
if (wxWidgets_FOUND)
    include (${wxWidgets_USE_FILE})
endif ()