CMake 在 macOS High Sierra 上找不到 wxWidgets 库
CMake cannot find wxWidgets library on macOS High Sierra
我正在学习 CMake 并想尝试用它来编译一个测试 wxWidgets 应用程序,我之前在 Windows 下成功编译了它。但是,我以前从未使用过 CMake,但当时我使用 Visual Studio 手动设置它。
所以我看了一些在线教程,并使用 CMake 在 C++ 中编译了一个基本的 hello world 应用程序(命令行),并且运行良好。然后我使用 brew.
安装了 wxWidgets
brew install wxmac
它确实安装了,我可以 运行 wx-config
工具成功。我也可以在取景器中看到文件。然后我将其添加到我的 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/Cellar/wxmac/3.0.4/
我做错了什么?
经过六个小时的折腾,我在findWxWidgets脚本中发现了一个新的配置选项,这是一个需要的配置。
我所要做的就是指定 wx-config
文件的位置。
cmake -G "Unix Makefiles" .. -DwxWidgets_CONFIG_EXECUTABLE=/usr/local/Cellar/wxmac/3.0.4/bin/wx-config
并且它能够找到 wxWidgets 库。似乎是我的一个简单错误。
这是我找到的来源:http://cmake.3232098.n2.nabble.com/Can-t-find-wxWidgets-tp7591015p7591017.html
认为这是一个错误...
要解决此问题,请设置 CMAKE_FIND_ROOT_PATH 以帮助 cmake 找到该程序。
在 find_package(wxWidgets).
之前添加以下行
set(CMAKE_FIND_ROOT_PATH "/usr/local")
我在 FindWidgets.cmake 中发现可疑代码并带有注释
Support cross-compiling, only search in the target platform.
它为find_program命令提供ONLY_CMAKE_FIND_ROOT_PATH选项。
根据文档,此选项意味着仅在 'root' 路径下查找程序。
我正在学习 CMake 并想尝试用它来编译一个测试 wxWidgets 应用程序,我之前在 Windows 下成功编译了它。但是,我以前从未使用过 CMake,但当时我使用 Visual Studio 手动设置它。
所以我看了一些在线教程,并使用 CMake 在 C++ 中编译了一个基本的 hello world 应用程序(命令行),并且运行良好。然后我使用 brew.
安装了 wxWidgetsbrew install wxmac
它确实安装了,我可以 运行 wx-config
工具成功。我也可以在取景器中看到文件。然后我将其添加到我的 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/Cellar/wxmac/3.0.4/
我做错了什么?
经过六个小时的折腾,我在findWxWidgets脚本中发现了一个新的配置选项,这是一个需要的配置。
我所要做的就是指定 wx-config
文件的位置。
cmake -G "Unix Makefiles" .. -DwxWidgets_CONFIG_EXECUTABLE=/usr/local/Cellar/wxmac/3.0.4/bin/wx-config
并且它能够找到 wxWidgets 库。似乎是我的一个简单错误。
这是我找到的来源:http://cmake.3232098.n2.nabble.com/Can-t-find-wxWidgets-tp7591015p7591017.html
认为这是一个错误...
要解决此问题,请设置 CMAKE_FIND_ROOT_PATH 以帮助 cmake 找到该程序。 在 find_package(wxWidgets).
之前添加以下行set(CMAKE_FIND_ROOT_PATH "/usr/local")
我在 FindWidgets.cmake 中发现可疑代码并带有注释
Support cross-compiling, only search in the target platform.
它为find_program命令提供ONLY_CMAKE_FIND_ROOT_PATH选项。 根据文档,此选项意味着仅在 'root' 路径下查找程序。