【发布时间】:2021-01-16 11:19:48
【问题描述】:
我搜索了这个主题并找到了this 和this,但它似乎只与构建 wxWidgets 或不包含我的问题的答案有关。
我已经在 Windows 上成功构建了静态库 für wxWidgets,但我现在正在努力使用 Cmake 将库正确包含到我的项目中。这是我的CMakeLists.txt:
set(PROJECT_NAME wxapp)
project(${PROJECT_NAME})
cmake_minimum_required(VERSION 2.8)
set(SRC_LIST main.cpp app.cpp app.h frame.cpp frame.h)
add_executable(${PROJECT_NAME} WIN32 ${SRC_LIST})
find_package(wxWidgets REQUIRED net gl core base)
include(${wxWidgets_USE_FILE})
target_link_libraries(${PROJECT_NAME} ${wxWidgets_LIBRARIES})
set(wxWidgets_USE_LIBS ON)
set(wxWidgets_CONFIGURATION msw)
我已经正确设置了WXWIN 路径变量。然而,CMake 会在此配置中引发错误:
Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
wxWidgets_INCLUDE_DIRS net gl core base)
我尝试了多种建议,例如使用下载预构建动态库并按照建议 here 手动添加它们,例如
set(wxWidgets_ROOT_DIR $ENV{WXWIN})
set(wxWidgets_LIBRARIES $ENV{WXWIN}/include)
set(wxWidgets_INCLUDE_DIR $ENV{WXWIN}/lib/vc14x_x64_dll)
include_directories(includes $ENV{WXWIN} $ENV{WXWIN}/include $ENV{WXWIN}/lib/vc14x_x64_dll)
link_directories($ENV{WXWIN} $ENV{WXWIN}/include $ENV{WXWIN}/lib/vc14x_x64_dll) # this seems to be a discouraged/deprecated method
但都无济于事。
【问题讨论】:
-
“我已经成功地在 Windows 上为 wxWidgets 构建了 static 库” - 但是
vc14x_x64_dll目录的名称表明您有.dll库,即 动态的。在任何地方,您为wxWidgets_ROOT_DIR变量分配了什么确切值以及该目录下的文件布局是什么? -
您需要在调用
find_package之前设置这些变量。另外,请在此处查看搜索路径:cmake.org/cmake/help/latest/command/… -
@StephenNewell:
find_package的文档仅描述了CONFIG文件的搜索过程。但是消息Could NOT find wxWidgets (missing: ...)暗示已经使用MODULE模式,并且CMake 已经找到了对应的“Find”脚本。此脚本实现的搜索过程在脚本本身(以及对应的doc page)中进行了描述,find_package并未对其进行标准化。 -
@Tsyvarev:是的,我在 D:\libs\wxWidgets\include\wx\wx.h 下有这个文件,我的 WXWIN 设置为 D:\libs\wxWidgets。那条路应该行得通,对吧?