我尝试使用cmake运行wxWidget示例,但无法在我的C++项目(CMakeLists.txt)中包含wxWidget的标头。
g++ main.cpp `wx-config --cppflags --libs` -o wxTest
程序工作并显示窗口。但是我如何使用CMakeLists.txt文件来做到这一点。例如,通常我创建一个名为external-libs的单独文件夹,然后在其中创建一个名为 whateverlibraryname 的文件夹,然后在其中创建一个头文件以及src和lib文件夹,我在其中放置头文件,任何源文件和.so文件。但在wxWidgets的情况下,我有几个静态库文件,并且在头文件中有许多单独的文件夹,我不知道如何将它们全部包含在内。它们会产生错误:
fatal error: wx/wx.h: No such file or directory
#include <wx/wx.h>
我使用的是Ubuntu 18.04,我的项目目录结构如下:
├── build
└── source
├── CMakeLists.txt
├── external-libraries
│ └── wxWidgets
│ ├── headers
│ │ ├── msvc
│ │ │ └── wx
│ │ └── wx
│ │ ├── android
│ │ ├── aui
│ │ ├── dfb
│ │ ├── generic
│ │ ├── gtk
│ │ ├── gtk1
│ │ ├── html
│ │ ├── meta
│ │ ├── motif
│ │ ├── msw
│ │ ├── osx
│ │ ├── persist
│ │ ├── private
│ │ ├── propgrid
│ │ ├── protocol
│ │ ├── qt
│ │ ├── ribbon
│ │ ├── richtext
│ │ ├── stc
│ │ ├── univ
│ │ ├── unix
│ │ ├── x11
│ │ ├── xml
│ │ └── xrc
│ ├── lib
├── libwx_baseu-3.1.a
│ │ ├── libwx_baseu_net-3.1.a
│ │ ├── libwx_baseu_xml-3.1.a
│ │ ├── libwx_gtk3u_adv-3.1.a
│ │ ├── libwx_gtk3u_aui-3.1.a
│ │ ├── libwx_gtk3u_core-3.1.a
│ │ ├── libwx_gtk3u_gl-3.1.a
│ │ ├── libwx_gtk3u_html-3.1.a
│ │ ├── libwx_gtk3u_propgrid-3.1.a
│ │ ├── libwx_gtk3u_qa-3.1.a
│ │ ├── libwx_gtk3u_ribbon-3.1.a
│ │ ├── libwx_gtk3u_richtext-3.1.a
│ │ ├── libwx_gtk3u_stc-3.1.a
│ │ ├── libwx_gtk3u_xrc-3.1.a
│ │ ├── libwxjpeg-3.1.a
│ │ ├── libwxregexu-3.1.a
│ │ ├── libwxscintilla-3.1.a
│ │ └── libwxtiff-3.1.a
│ └── src
├── main.cpp
Main.cpp顶部有#include<wx/wx.h>
。我使用VSCode,当我使用g++运行程序时(上面描述的命令)当我用CMake运行同一个程序时,它工作但不工作。这就是如何包括头文件夹和使用包含所有wxWidgets头文件和库文件的lib文件夹。CMakeList的内容应该是什么?txt文件和什么是其他必要的事情,我必须做的,使这项工作。
1条答案
按热度按时间7gcisfzg1#
CMake有wxWidgets的第一方支持,这里有一个例子:
不幸的是,这个模块是如此的陈旧,上面的代码最好使用导入的目标,而不需要用
include(${wxWidgets_USE_FILE})
来做这个奇怪的舞蹈,但是唉,至少它是有文档的。你可以设置各种变量来帮助它找到你的wxWidgets安装,更多细节请参见文档:https://cmake.org/cmake/help/latest/module/FindwxWidgets.html