如何在CMake中正确链接wxWidgets?Windows10+CLion环境下配置报错问询
问题解决方法
错误根因
你手动放在项目cmake目录下的第三方FindwxWidgets.cmake脚本存在依赖问题,它需要调用CMake自带的FindPackageHandleStandardArgs模块,但脚本写死了只在项目的cmake目录下查找该模块,所以触发找不到文件和未知命令的报错。CMake 3.21已经内置了官方维护的FindwxWidgets查找模块,不需要你自己额外提供这个文件。
解决步骤
- 第一步:删除你项目
cmake目录下的FindwxWidgets.cmake文件,不需要保留。 - 第二步:修正
CMakeLists.txt配置,主要调整wxWidgets_LIB_DIR路径指向你实际编译生成的库目录,同时可以删除冗余的wxWidgets_FOUND判断(因为find_package加了REQUIRED参数,找不到依赖会直接终止配置流程,不会走到后续逻辑)。
修正后的CMakeLists.txt示例
cmake_minimum_required(VERSION 3.20) project(Project) set(CMAKE_CXX_STANDARD 14) # 如果cmake目录下还有其他自定义模块可以保留这行,否则可以直接删除 list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) set(wxWidgets_ROOT_DIR C:/wxWidgets) # 注意这里要改成你实际编译输出的库目录: # 64位VS编译的静态库对应vc_x64_lib,动态库对应vc_x64_dll # 32位版本对应vc_lib或者vc_dll,根据你自己的编译结果调整 set(wxWidgets_LIB_DIR ${wxWidgets_ROOT_DIR}/lib/vc_x64_lib) set(wxWidgets_CONFIGURATION mswu) set(wxWidgets_EXCLUDE_COMMON_LIBRARIES FALSE) find_package(wxWidgets REQUIRED gl core base OPTIONAL_COMPONENTS net) add_executable(Project main.cpp) include(${wxWidgets_USE_FILE}) target_link_libraries(Project ${wxWidgets_LIBRARIES})
额外注意事项
- 请确认
C:/wxWidgets路径下的wxWidgets已经完成编译,生成的库文件架构(32/64位)、运行时选项(MD/MT)和你的CLion项目配置完全一致,否则后续链接阶段还会出现报错。 - 如果是首次编译wxWidgets,建议使用和CLion配套的构建工具链编译,避免架构不匹配的问题。
内容的提问来源于stack exchange,提问作者Shiru
相关产品推荐
相关产品推荐

