Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake在macOS High Sierra上找不到wxWidgets库_C++_Macos_Cmake_Wxwidgets - Fatal编程技术网

C++ CMake在macOS High Sierra上找不到wxWidgets库

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中查看文件。然后我把它添加到我的

我正在学习CMake,并想尝试编译一个测试wxWidgets应用程序,我以前在Windows下成功编译过该应用程序。然而,我以前从未使用过CMake,但当时我使用VisualStudio手动设置它

我在网上查看了一些教程,并用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中的那些是指那些旧的二进制文件。不知道这有多真实,但我想这就是原因,因为它解决了我的问题。