Categories: wxWidgets

Собираем сторонние компоненты wxWidgets в Code::Blocks

Сегодня я расскажу о том, как создать проект Code::Blocks, использующий в своей работе сторонние библиотеки. В качестве сторонней библиотеки мы возьмем библиотеку wxPropertyGrid, предоставляющую возможность встроить редактор свойств в приложение.

Для того, чтобы проверить как все работает, нам необходимо создать тестовое приложение, которое будет использовать в своей работе дополнительную библиотеку. Тестовое приложение я собирал с настройками, указанными ниже:

Исходный код тестового приложения:

#include <wx/wx.h>
#include <wx/propgrid/propgrid.h>

class wxTestApp : public wxApp
{
    virtual bool OnInit();
};

DECLARE_APP(wxTestApp)

class wxTestMainFrame : public wxFrame
{
    void CreateControls()
    {
        wxBoxSizer * sizer = new wxBoxSizer(wxVERTICAL);
        SetSizer(sizer);
        wxPropertyGrid * propgrid = new wxPropertyGrid(this, wxNewId(),
wxDefaultPosition, wxDefaultSize, 0);
        sizer->Add(propgrid, 1, wxEXPAND);
    }
public:
    wxTestMainFrame()
    {
        Create(NULL);
    }
    bool Create(wxWindow * parent, wxWindowID id = wxID_ANY, const wxString & title = wxT("wxTest"))
    {
        bool res = wxFrame::Create(parent, id, title);
        if(res)
        {
            CreateControls();
        }
        return res;
    }
};

bool wxTestApp::OnInit()
{
    wxTestMainFrame * frame = new wxTestMainFrame();
    SetTopWindow(frame);
    frame->Centre();
    frame->Show();
    return true;
}

IMPLEMENT_APP(wxTestApp)

После того, как мы создали тестовое приложение, нам необходимо добавить библиотеку wxPropertyGrid в workspace. wxPropertyGrid распространяется в виде архива с исходным кодом, который мы распакуем в подкаталог propgrid. Далее в Code::Blocks создаем новый проект статической библиотеки:


Нам необходимо чтобы файл проекта был создан в папке propgrid/build, поэтому этот параметр необходимо подправить вручную:


Изменяем параметры таким образом чтобы наша бибилиотека создавалась в каталоге propgrid/lib (чего-то мне показалось, что параметр Output dir в текущей версии Code::Blocks не работает):


Далее идем в настройки проекта и видим, что в Output filename у нас записано немного не то, что мы указывали при создании проекта, а именно, файл библиотеки с текущими параметрами будет создаваться в каталоге propgrid/build (в каталоге с проектом). Изменяем параметр Output filename и указываем новый путь вывода статической библиотеки:


Теперь нам необходимо указать, в какой папке наш проект статической библиотеки будет искать заголовочные файлы. Пути к заголовочным файлам необходимо указать в настройках общих для обеих сборок (Debug и Release):


Для того, чтобы проект библиотеки был собран с такими же настройками как и наше тестовое приложение (это требование обязательно), нам необходимо скопировать список директив компилятора из проекта приложения в проект библиотеки:


Далее проставляем зависимости:


Добавляем в список каталогов для поиска заголовочных файлов каталог с заголовочными файлами wxPopertyGrid:


В список каталогов для поиска библиотек добавляем путь к папке со статической библиотекой wxPropertyGrid:


В настройках линкера в список зависимостей добавляем статическую библиотеку wxPropertyGrid:


Вот и все, можно собирать проект. После сборки получим приблизительно такой результат:

Скачать пример

T-Rex

Share
Published by
T-Rex

Recent Posts

Разработка кроссплатформенных модульных приложений на C++ с библиотекой wxWidgets

Введение Уже долгое время не пишу статьи о разработке, хотя сам процесс написания мне очень…

10 years ago

wxWidgets App With Plugins (Windows/Linux/Mac) – Sample Source Code

I can see that there is still a lot of topics at wxWidgets forums related…

11 years ago

wxToolBox is Now Open-Source!

I've just published the source code of wxToolBox component and a couple of sample apps at…

11 years ago

Microsoft Kinect Helper Library and Sample for wxWidgets

Microsoft released their Kinect SDK several days ago. So, for those wxWidgets developers who are…

13 years ago

wxJSON 1.1.0 Released

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to…

15 years ago

wxRuby. Оно даже работает!

Вдохновленнный читаемой нынче книгой My Job Went to India: 52 Ways to Save Your Job…

15 years ago