2011-11-29 34 views
0

我是新来wxWidgets的
我的平台是Fedora的16,GCC 4.6.2编辑器是VIM
我下载SourceForge上的wxwidget.gz.tar文件,并试图编译。如何使用wxwidget2.9.2在Linux

我在bash中输入./configure --with-gtk --enable-unicode --disable-shared,并进行安装并完成wxwidget安装。

我试图comile文件: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

您应该使用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的应用:

gcc OUTPUT_OF_WX-CONFIG test.cpp -o test 

#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() {} 

您可以使用下面的调用编译这个其中OUTPUT_OF_WX-CONFIG是上面的标志和库目录,test.cpp包含上述源代码。如果你的wxWidgets安装设置正确,这应该编译并运行良好(将显示一个空的窗口)。

+1

只需少量添加:你可以在它们周围使用wx-config --cxxflags和wx-config --libs作为编译器和链接器标志。 ''被shell的内部命令输出取代。 –

+0

感谢您的帮助,我现在就解决它。gcc 4.6必须使用g ++ -o src src.cpp'wx-config --cxxflags --libs'来编译它。如果我使用g ++'wxconfig --cxxflags --libs'-o xx xx.cpp。它不会成功 – cwh5635

2

我强烈建议您使用CMake来管理您的wxWidgets应用程序构建过程。

您可以在CMake配置文件here中找到李木贝的示例应用程序。

只需克隆项目并按照“README”文件中的说明操作。

git clone https://bitbucket.org/vizz/wxstartapp.git 

的基本思路是描述你的项目来源,依赖和使用CMake的处理所有“收集过程”(这样你就不必担心“WX-配置”及其选项)通过适当的内置宏/函数。

例如,配置你的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” 文件为你自己。

+0

感谢您的帮助。我会在稍后尝试CMAKE。问题解决 – cwh5635

+0

我同意,只要应用程序变大,像CMake这样的构建系统是必须的。 – LiMuBei