C++ CMake在macOS High Sierra上找不到wxWidgets库
我正在学习CMake,并想尝试编译一个测试wxWidgets应用程序,我以前在Windows下成功编译过该应用程序。然而,我以前从未使用过CMake,但当时我使用VisualStudio手动设置它C++ CMake在macOS High Sierra上找不到wxWidgets库,c++,macos,cmake,wxwidgets,C++,Macos,Cmake,Wxwidgets,我正在学习CMake,并想尝试编译一个测试wxWidgets应用程序,我以前在Windows下成功编译过该应用程序。然而,我以前从未使用过CMake,但当时我使用VisualStudio手动设置它 我在网上查看了一些教程,并用C++在C++中编译了一个基本的Hello World应用程序(命令行),运行良好。然后我使用brew安装了wxWidgets brew install wxmac 它确实安装了,我可以成功运行wx-config工具。我还可以在finder中查看文件。然后我把它添加到我的
我在网上查看了一些教程,并用C++在C++中编译了一个基本的Hello World应用程序(命令行),运行良好。然后我使用brew安装了wxWidgets
brew install wxmac
它确实安装了,我可以成功运行wx-config
工具。我还可以在finder中查看文件。然后我把它添加到我的CMakeLists.txt
文件中
project(wxWidgetsTest)
cmake_minimum_required(VERSION 2.8)
find_package(wxWidgets COMPONENTS core base wxSTC wxAUI REQUIRED)
include( "${wxWidgets_USE_FILE}" )
add_executable(
${PROJECT_NAME}
main.cpp
)
target_link_libraries(
${PROJECT_NAME}
${wxWidgets_LIBRARIES}
)
但是,当我尝试生成生成文件时,我使用了以下命令:
cmake -G "Unix Makefiles" ..
而且它没有说明find_package
找不到wxWidgets库。这是错误输出:
CMake Error at /usr/local/Cellar/cmake/3.11.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES)
Call Stack (most recent call first):
/usr/local/Cellar/cmake/3.11.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/usr/local/Cellar/cmake/3.11.1/share/cmake/Modules/FindwxWidgets.cmake:953 (find_package_handle_standard_args)
CMakeLists.txt:5 (find_package)
wxWidgets库安装在/usr/local/ceral/wxmac/3.0.4/
我做错了什么?经过六个小时的摆弄,我在findWxWidgets脚本中找到了一个新的配置选项,这是一个必需的配置 我所要做的就是指定
wx config
文件的位置
project(wxWidgetsTest)
cmake_minimum_required(VERSION 2.8)
find_package(wxWidgets COMPONENTS core base wxSTC wxAUI REQUIRED)
include( "${wxWidgets_USE_FILE}" )
add_executable(
${PROJECT_NAME}
main.cpp
)
target_link_libraries(
${PROJECT_NAME}
${wxWidgets_LIBRARIES}
)
cmake-G“Unix生成文件”-DwxWidgets_CONFIG_EXECUTABLE=/usr/local/ceral/wxmac/3.0.4/bin/wx-CONFIG
它能够找到wxWidgets库。这似乎是我的一个简单错误
这就是我发现的来源:认为它是一个bug 要解决此问题,请设置CMAKE\u FIND\u ROOT\u路径以帮助CMAKE查找程序。 在find_包(wxWidgets)之前放置以下行
set(CMAKE\u FIND\u ROOT\u PATH)/usr/local”)
我在FindWidgets.cmake中发现了带有注释的可疑代码
支持交叉编译,仅在目标平台中搜索。
它只提供查找程序命令的\u CMAKE\u FIND\u ROOT\u PATH选项。
根据文档,此选项意味着只能在“根”路径下查找程序。也许您可以使用
SET(wxWidgets\u root\u DIR/usr/local/ceral/wxmac/3.0.4/)
@MarkSetchell谢谢,但它也不起作用。我也犯了同样的错误。在您学习CMake时,我问了一个明显的问题:您是否在建议的更改后删除了CMakeCache.txt
?find_包
调用的结果被缓存,您可能看不到更改的预期结果。当你在做的时候。请切换所需的cmake\u最小值
和项目
呼叫的顺序。所需的cmake\u最小值
会影响项目
调用中的一些初始设置。@vre是的,我影响了。我正在删除整个构建文件夹并重新运行cmake命令。顺便说一下,谢谢你的第二个建议。没有更改,但也没有更改。如果查看/usr/local/bin/wx config
,您将看到它是指向上面指定的二进制文件的符号链接。因此,如果您使用此链接,它将始终指向您使用自制软件安装的最新版本,而您指定的版本可能会过时。“只是一个想法。”马克·塞切尔说,这并不总是正确的。我已经读到macOS附带了wxWidgets的旧版本的二进制文件,而本地bin中的那些是指那些旧的二进制文件。不知道这有多真实,但我想这就是原因,因为它解决了我的问题。