簡體   English   中英

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 中發現了帶有注釋的可疑代碼

支持交叉編譯,只在目標平台搜索。

並且它為 find_program 命令提供 ONLY_CMAKE_FIND_ROOT_PATH 選項。 根據文檔,此選項意味着僅在“root”路徑下查找程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM