首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到wxWidgets (缺少: wxWidgets_FOUND)

找不到wxWidgets (缺少: wxWidgets_FOUND)
EN

Stack Overflow用户
提问于 2018-01-22 04:01:16
回答 1查看 2.9K关注 0票数 0

我正在使用Ubuntu中的wxWidgets编写一个hello-world级别的程序。

代码编译为

代码语言:javascript
复制
g++ HelloWorld.cpp `wx-config --libs` `wx-config --cxxflags` -o HelloWorldApp -I../inc
代码语言:javascript
复制
maot@HP-Pavilion-dv7:~/Perforce/maot_HP_Pavilion_dv7_full_02/WxWidgets/Learning_01/src$ which wx-config
/home/maot/Perforce/wxWidgets-3.1.0/gtk-build/wx-config
maot@HP-Pavilion-dv7:~/Perforce/maot_HP_Pavilion_dv7_full_02/WxWidgets/Learning_01/src$ 

配置之所以有意义,是因为我将wx- ...which的路径放在了path环境变量中。我自己编译了wxWidgets。

现在我想使用cmake。我的CMakeLists.txt文件尝试:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8.9)
project(WxWidgets_Learning_01)

set(CMAKE_CXX_COMPILER /usr/bin/g++)

message("CMAKE_CXX_FLAGS_DEBUG = ${CMAKE_CXX_FLAGS_DEBUG}")
message("CMAKE_CXX_FLAGS_RELEASE = ${CMAKE_CXX_FLAGS_RELEASE}")

set(CMAKE_CXX_FLAGS_DEBUG " -g3 ")
set(CMAKE_CXX_FLAGS_RELEASE "")

message("CMAKE_CXX_FLAGS_DEBUG = ${CMAKE_CXX_FLAGS_DEBUG}")
message("CMAKE_CXX_FLAGS_RELEASE = ${CMAKE_CXX_FLAGS_RELEASE}")

include_directories(../inc)
include_directories(../api/IBJts/source/cppclient/client)
include_directories(../api/IBJts/source/cppclient)

# wxWidgets header files start
include_directories(/home/maot/Perforce/wxWidgets-3.1.0/include)
include_directories(/home/maot/Perforce/wxWidgets-3.1.0/gtk-build/lib/wx/include/gtk2-unicode-3.1)
# wxWidgets header files end

# wxWidgets defines start
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__)
# wxWidgets defines finish

# Directories with wxWidget libs start
link_directories(/home/maot/Perforce/wxWidgets-3.1.0/gtk-build/lib)
# Directories with wxWidget libs finish

SET(wxWidgets_ROOT_DIR /home/maot/Perforce/wxWidgets-3.1.0/gtk-build/lib)
SET(wxWidgets_CONFIGURATION mswud)

# https://cmake.org/cmake/help/v3.0/module/FindwxWidgets.html
# Note that for MinGW users the order of libs is important!
find_package(wxWidgets COMPONENTS net gl core base REQUIRED)
include(${wxWidgets_USE_FILE})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wall -pthread -lm ")

file(GLOB sources "../src/*.cpp" )
file(GLOB headers "../inc/*.h" )

set(daytrading_sources ${sources} ${headers})

add_executable(WxWidgets_Learning_01 ${sources})
target_link_libraries(${PROJECT_NAME} ${wxWidgets_LIBRARIES})

输出:

代码语言:javascript
复制
maot@HP-Pavilion-dv7:~/Perforce/maot_HP_Pavilion_dv7_full_02/WxWidgets/Learning_01/src$ \rm -rf CMakeFiles/ ; cmake .
-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMAKE_CXX_FLAGS_DEBUG = -g
CMAKE_CXX_FLAGS_RELEASE = -O3 -DNDEBUG
CMAKE_CXX_FLAGS_DEBUG =  -g3 
CMAKE_CXX_FLAGS_RELEASE = 
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find wxWidgets (missing: wxWidgets_FOUND)
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-2.8/Modules/FindwxWidgets.cmake:832 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:40 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/maot/Perforce/maot_HP_Pavilion_dv7_full_02/WxWidgets/Learning_01/src/CMakeFiles/CMakeOutput.log".
maot@HP-Pavilion-dv7:~/Perforce/maot_HP_Pavilion_dv7_full_02/WxWidgets/Learning_01/src$ 

我想find_package找不到wxWidgets,我不明白为什么。我不确定这个mswud的事情,因为我找不到关于它的解释;ms听起来像Bill G。我已经尝试了wxWidgets_ROOT_DIR的几个值,但没有成功。欢迎任何帮助: wxWidgets_ROOT_DIR应该有什么价值,mswud有什么好处吗?

在===下编辑===

我使用-- https://wiki.wxwidgets.org/Compiling_and_getting_started =$(Pwd)选项跟踪前缀。不需要make install,它说。

如何将wx-config的结果放入CMakeLists.txt?

代码语言:javascript
复制
maot@HP-Pavilion-dv7:~$ wx-config --cxxflags
-I/home/maot/Perforce/wxWidgets-3.1.0/gtk-build/lib/wx/include/gtk2-unicode-3.1 -I/home/maot/Perforce/wxWidgets-3.1.0/include -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread
maot@HP-Pavilion-dv7:~$ 
maot@HP-Pavilion-dv7:~$ wx-config --libs
-L/home/maot/Perforce/wxWidgets-3.1.0/gtk-build/lib -pthread   -Wl,-rpath,/home/maot/Perforce/wxWidgets-3.1.0/gtk-build/lib -lwx_gtk2u_xrc-3.1 -lwx_gtk2u_html-3.1 -lwx_gtk2u_qa-3.1 -lwx_gtk2u_adv-3.1 -lwx_gtk2u_core-3.1 -lwx_baseu_xml-3.1 -lwx_baseu_net-3.1 -lwx_baseu-3.1 
maot@HP-Pavilion-dv7:~$ 

我使用下面的CMakeLists.txt文件编译和运行我的代码;我意识到这不是事情的本意。

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8.9)
project(WxWidgets_Learning_01)

set(CMAKE_CXX_COMPILER /usr/bin/g++)

message("CMAKE_CXX_FLAGS_DEBUG = ${CMAKE_CXX_FLAGS_DEBUG}")
message("CMAKE_CXX_FLAGS_RELEASE = ${CMAKE_CXX_FLAGS_RELEASE}")

set(CMAKE_CXX_FLAGS_DEBUG " -g3 ")
set(CMAKE_CXX_FLAGS_RELEASE "")

message("CMAKE_CXX_FLAGS_DEBUG = ${CMAKE_CXX_FLAGS_DEBUG}")
message("CMAKE_CXX_FLAGS_RELEASE = ${CMAKE_CXX_FLAGS_RELEASE}")

include_directories(../inc)
include_directories(../api/IBJts/source/cppclient/client)
include_directories(../api/IBJts/source/cppclient)

# wxWidgets header files start
include_directories(../../../../wxWidgets-3.1.0/include)
include_directories(../../../../wxWidgets-3.1.0/gtk-build/lib/wx/include/gtk2-unicode-3.1)
# wxWidgets header files end

# wxWidgets defines start
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__)
# wxWidgets defines finish

# Directories with wxWidget libs start
link_directories(../../../../wxWidgets-3.1.0/gtk-build/lib)
# Directories with wxWidget libs finish

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wextra -Wall -pthread -lm ")

file(GLOB sources "../src/*.cpp" )
file(GLOB headers "../inc/*.h" )

set(daytrading_sources ${sources} ${headers})

add_executable(WxWidgets_Learning_01 ${sources})
target_link_libraries(WxWidgets_Learning_01
                      libwx_baseu-3.1.so
                      libwx_gtk2u_adv-3.1.so
                      libwx_gtk2u_gl-3.1.so
                      libwx_gtk2u_qa-3.1.so
                      libwx_gtk2u_stc-3.1.so
                      libwx_baseu_net-3.1.so
                      libwx_gtk2u_aui-3.1.so
                      libwx_gtk2u_html-3.1.so
                      libwx_gtk2u_ribbon-3.1.so
                      libwx_gtk2u_xrc-3.1.so
                      libwx_baseu_xml-3.1.so
                      libwx_gtk2u_core-3.1.so
                      libwx_gtk2u_propgrid-3.1.so
                      libwx_gtk2u_richtext-3.1.so
                      )
# I have just added all .so files that I found after the build.
EN

回答 1

Stack Overflow用户

发布于 2018-01-22 04:10:11

如果你只需要为原型编译一个简单的例子,那么这就是它。

然而,如果你需要编译一些大的项目-你可以尝试设置Anjuta/CodeBlocks/CodeLite来帮助你。从长远来看,这将使您受益(特别是CodeBlocks)。

关于你的问题: mswud并不好,因为它(顾名思义)适用于Windows。

此外,对于include/lib目录,您应该使用wx-config适当的命令,就像您用于命令行编译一样。

您还可以尝试在trac.wxwidgets.org中查看TobiasT所做的CMake工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48371135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档