简体   繁体   中英

How wxWidgets cmake find in window

I can't find wxWidget on window. The error is:

CMake Error at E:/Program Files/JetBrains/CLion 2020.2.1/bin/cmake/win/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
  wxWidgets_INCLUDE_DIRS)`

My Env:

  • win10
  • cmake 3.17
  • wxWidgets 3.1.4

I use cmake to build and install the wxWidgets

mkdir build
cd build
cmake .. -config Release
cmake --build .
cmake --install .

Which install wxWidgets in D:/Program Files(x86)/wxWidgets .

The I set the env variable wxWidgets_ROOT_DIR to D:\\Program Files (x86) , because that's a code snnipt in cmake's script FindWxWidgets.cmake .

  find_path(wxWidgets_ROOT_DIR
    NAMES include/wx/wx.h
    PATHS
      ENV wxWidgets_ROOT_DIR
      ENV WXWIN
      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]"  # WX 2.6.x
      C:/
      D:/
      ENV ProgramFiles
    PATH_SUFFIXES
      wxWidgets-3.1.0
      wxWidgets-3.0.2
      wxWidgets-3.0.1
      wxWidgets-3.0.0
      wxWidgets-2.9.5
      wxWidgets-2.9.4
      wxWidgets-2.9.3
      wxWidgets-2.9.2
      wxWidgets-2.9.1
      wxWidgets-2.9.0
      wxWidgets-2.8.9
      wxWidgets-2.8.8
      wxWidgets-2.8.7
      wxWidgets-2.8.6
      wxWidgets-2.8.5
      wxWidgets-2.8.4
      wxWidgets-2.8.3
      wxWidgets-2.8.2
      wxWidgets-2.8.1
      wxWidgets-2.8.0
      wxWidgets-2.7.4
      wxWidgets-2.7.3
      wxWidgets-2.7.2
      wxWidgets-2.7.1
      wxWidgets-2.7.0
      wxWidgets-2.7.0-1
      wxWidgets-2.6.4
      wxWidgets-2.6.3
      wxWidgets-2.6.2
      wxWidgets-2.6.1
      wxWidgets-2.5.4
      wxWidgets-2.5.3
      wxWidgets-2.5.2
      wxWidgets-2.5.1
      wxWidgets
    DOC "wxWidgets base/installation directory"
    )

I think I have config right the wxWidgets_ROOT_DIR. Because I message the varialbe message(wxWidgets_ROOT_DIR " " ${wxWidgets_ROOT_DIR}) and It show the right value: D:/Program Files(x86)/wxWidgets

The I use find_libarray(wxWidgets Required) in my project to find wxWidgets, and it shows the above error.

My question is:

  • How to fix it.
  • Or what find_package(xxx) do on window?

Update:

I finally find it's clion issue that use his cmake not the stand cmake. I use the stand cmake with vscode. And they works fine.

I also had problems with wxWidgets installation on Windows and CLion, I' ve followed these steps:

  • Download MinGW(32) and set as the default compiler for CLion (I had problems with other compilers)

  • Download the windows installer of wxWidgets from the official site ( https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.4/wxMSW-3.1.4-Setup.exe ) The installer will download all the files of the library in "C:\\wxWidgets-3.1.4" and will also create the environment variable WXWIN that will contain the path of the folder "C:\\wxWidgets-3.1.4"

  • Compile the library following this tutorial for MinGW https://wiki.wxwidgets.org/Compiling_wxWidgets_with_MinGW (make a coffee, it will take a while) The compiler will but object files in "C:\\wxWidgets-3.1.4\\lib\\gcc_dll", in "C:\\wxWidgets-3.1.4\\build\\msw\\gcc_mswudll" and probably in other places based on the instruction files in the "C:\\wxWidgets-3.1.3\\build" folder

  • After the compilation you need to add "C:/wxWidgets-3.1.4/lib/gcc_dll" in the environment variable PATH of the OS

After a restart write this code in the CMakeLists of your project:

cmake_minimum_required(VERSION 3.17)
project(your project name)

set(CMAKE_CXX_STANDARD 20)

SET(wxWidgets_USE_LIBS)
#for using RichTextCtrl
FIND_PACKAGE(wxWidgets REQUIRED richtext aui adv html core xml net base) 
IF(wxWidgets_FOUND)
    INCLUDE("${wxWidgets_USE_FILE}")
    add_executable(your list of executables)
    TARGET_LINK_LIBRARIES(note ${wxWidgets_LIBRARIES})
ELSE(wxWidgets_FOUND)
    #for convenience. When we cannot continue,inform the user
    MESSAGE("wxWidgets not found!")
ENDIF(wxWidgets_FOUND)

And now wxWidgets should work

I was able to build the samples using CLion and CMake on Mac OS, but much of what I learned should be similar, given CLion's cross-platform nature. The directions are very long, so here is a link: https://forums.wxwidgets.org/viewtopic.php?p=197038#p187276

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM