【问题标题】:How to use wxwidget2.9.2 in linux如何在linux中使用wxwidget2.9.2
【发布时间】:2011-11-29 12:48:36
【问题描述】:

我是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,没有这样的文件

我该如何解决这个问题?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    您应该使用 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 安装设置正确,则应该可以正常编译和运行(将显示一个空窗口)。

    【讨论】:

    • 只是一个小补充:您可以使用 wx-config --cxxflags 和 wx-config --libs 以及它们周围的 `` 作为编译器和链接器标志。 ``被shell内部命令输出替换。
    • 感谢您的帮助,我现在解决了。gcc 4.6 必须使用 g++ -o src src.cpp 'wx-config --cxxflags --libs' 来编译它。如果我使用 g++ 'wxconfig --cxxflags --libs' -o xx xx.cpp。它没有成功
    【解决方案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”文件。

    【讨论】:

    • 感谢您的帮助。我稍后会尝试 CMAKE。问题解决了
    • 我同意,一旦应用变得更大,像 CMake 这样的构建系统是必须的。
    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多