如何在linux中使用wxwidget2.9.2

时间:2011-11-29 12:48:37

标签: c++ wxwidgets

我是 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,没有此类文件

我该如何解决这个问题?

2 个答案:

答案 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”文件。