Cmake在Windows上找不到wxWidgets
我已经搜索了这个主题并找到了和,但它似乎要么与构建wxWidgets有关,要么不包含我问题的答案 我已经成功地在Windows上构建了静态libs für wxWidgets,但现在我正在努力使用Cmake将库正确地包含到我的项目中。这是我的Cmake在Windows上找不到wxWidgets,cmake,wxwidgets,Cmake,Wxwidgets,我已经搜索了这个主题并找到了和,但它似乎要么与构建wxWidgets有关,要么不包含我问题的答案 我已经成功地在Windows上构建了静态libs 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.c
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
path变量。但是,CMake在该配置中抛出一个错误:
Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
wxWidgets_INCLUDE_DIRS net gl core base)
我尝试过多种建议,比如使用下载预构建动态库并根据建议手动添加它们,例如
但这一切都没有用。解决方法(至少对我有效):
我更改了建议语句中的find_package
命令:
find_包(wxWidgets组件gl核心基础可选_组件网)
到
find_包(需要wxWidgets 3.1)
中的一个用户将此包含在他/她的CMake文件中,出于依赖性,我尝试了此方法,它确实起了作用。似乎CMake在某些未知情况下的配置无法按照说明中提供的语句正常运行。如果我将命令更改为新语句,我的静态构建以及自编译和预编译DLL将被CMake完美识别
我还清除了CMake缓存,灵感来自。根据这篇文章,在某些情况下,Windows和CMake缓存似乎存在问题,但我不知道原因。我可以复制用户在那里观察到的行为:
在Windows下,您必须指向安装目录,例如
设置(wxWidgets\u ROOT\u DIR“C:/wxWidgets-3.1.3”)设置(wxWidgets\u LIB\u DIR
“C:/wxWidgets-3.1.3/lib/vc14x_x64_dll”)
但是这种行为仍然很奇怪。当我使用CMake GUI(3.16,
最新的),行为是这样的
find_package(wxWidgets COMPONENTS gl core base可选_COMPONENTS net)
,CMake将无法找到我的安装,尽管WXWIN
路径设置正确
如果您对此了解得更多,我很高兴被纠正。“我已经成功地在Windows上为wxWidgets构建了静态库”-但是
vc14x\u x64\u dll
目录的名称表明您有.dll
库,即动态库。在任何地方,您分配给wxWidgets\u ROOT\u DIR
变量的确切值是什么,以及该目录下的文件布局是什么?在调用find\u package
之前,您需要设置这些变量。另外,请参见此处的搜索路径:欢迎使用堆栈溢出!你试过用谷歌搜索错误信息吗?在这样做的时候,我发现并提出了一些问题,似乎有一些有用的建议。您尝试过这些吗?@StephenNewell:find_package的文档仅描述了CONFIG
文件的搜索过程。但是消息找不到wxWidgets(缺少:…)
意味着使用了模块
模式,CMake找到了相应的“查找”脚本。此脚本实现的搜索过程在脚本本身(以及相应的)中进行了描述,并且未通过find_package
@Tsyvarev进行标准化:是的,我将此文件放在D:\libs\wxWidgets\include\wx\wx.h下,WXWIN设置为D:\libs\wxWidgets。这条路应该行得通,对吗?
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