我是 wxWidgets 的新手
我的平台是fedora 16,gcc 4.6.2编辑器是vim
我在sourceforge上下载了wxwidget.gz.tar文件,并尝试编译。
我在bash中输入./configure --with-gtk --enable-unicode --disable-shared
,然后进行安装并完成wxwidget安装。
我试图编译一个文件:test.cpp 以下是文件的内容:
#include <wx/wx.h>
int main()
{
return 0;
}//i have copied the head file folder to /usr/include/wx
use gcc -o
gcc显示wx/platform.h:wx/setup.h
,没有此类文件
我该如何解决这个问题?
答案 0 :(得分:2)
你应该使用wx-config --cxxflags和wx-config --libs来获取编译所需的包含路径,标志和库。
详细说明:您需要告诉编译器在哪里可以找到包含文件以及需要链接的库。 wx-config是一个便利程序,可以为您提供该信息。在我的系统上,wx-config的输出如下所示:
-I/usr/local/lib/wx/include/gtk2-unicode-2.9 -I/usr/local/include/wx-2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -L/usr/local/lib -pthread -lwx_gtk2u_xrc-2.9 -lwx_gtk2u_html-2.9 -lwx_gtk2u_qa-2.9 -lwx_gtk2u_adv-2.9 -lwx_gtk2u_core-2.9 -lwx_baseu_xml-2.9 -lwx_baseu_net-2.9 -lwx_baseu-2.9
让我们来看看这个极简主义的wxWidgets应用程序:
#include <wx/app.h>
#include <wx/frame.h>
/** Main application class.
* This class is derived from the main wxWidgets application class.
*/
class MyApp : public wxApp
{
public:
/// Initialization function. Called at startup.
virtual bool OnInit();
virtual ~MyApp();
};
DECLARE_APP(MyApp);
IMPLEMENT_APP(MyApp);
bool MyApp::OnInit()
{
if ( !wxApp::OnInit() )
return false;
wxFrame* MainFrame = new wxFrame(NULL, wxID_ANY, wxT("MyApp"));
MainFrame->Show();
return true;
}
MyApp::~MyApp() {}
您可以使用以下调用进行编译:
gcc OUTPUT_OF_WX-CONFIG test.cpp -o test
其中OUTPUT_OF_WX-CONFIG是上面的标志和库目录,test.cpp包含上面的源代码。如果wxWidgets安装设置正确,则应该编译并运行正常(将显示一个空窗口)。
答案 1 :(得分:2)
我强烈建议您使用CMake来管理wxWidgets应用程序构建过程。
你可以找到与CMake配置文件here捆绑在一起的LiMuBei示例应用程序。
只需克隆项目并按照“README”文件中的说明进行操作。
git clone https://bitbucket.org/vizz/wxstartapp.git
基本思想是描述您的项目源,依赖关系并使用CMake来处理所有“收集过程”(这样您就不必担心“wx-config”及其选项)通过适当的构建在宏/函数中。
例如,要配置wxWidgets项目,您需要编写:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(wxstartapp)
FIND_PACKAGE(wxWidgets REQUIRED core base)
IF(wxWidgets_FOUND)
INCLUDE(${wxWidgets_USE_FILE})
...some CMake stuff here...
INCLUDE_DIRECTORIES(
... some additional CMake stuff here...
${wxWidgets_INCLUDE_DIRS}
)
TARGET_LINK_LIBRARIES(wxstartapp ${wxWidgets_LIBRARIES})
ENDIF(wxWidgets_FOUND)
请亲自查看“CMakeLists.txt”文件。