LINUX.ORG.RU

Можно ли использовать wxWidgets без установки? (т.е. просто положить so в папку с программой)

 , , ,


0

1

Здравствуйте,

Не могу понять, как подключить wxWidgets без его установки в систему. На сайте авторов нашел только пример с подключением либо через CMake строками типа:

find_package(wxWidgets REQUIRED COMPONENTS gl core base)
if(wxWidgets_USE_FILE) # not defined in CONFIG mode
	include(${wxWidgets_USE_FILE})

либо в Code::Blocks-е я пишу особые флаги для сборки. Для линковщика:

`wx-config --libs std,gl`

а для компилятора:

`wx-config --cflags`

Да, это всё отлично работает, но мне бы сильно упростило жизнь ситуация, когда можно просто таскать этот wxWidgets с собой.

Если я собираю динамические библиотеки и пытаюсь их подключить, то проблема возникает уже на этапе подключения заголовков, потому что требуемый файл setup.h вообще отсутствует в папке include. Да, там по разным папкам раскидано несколько setup.h, но непонятно какой брать и можно ли так вообще делать. Я с одним попробовал, но опять вылезла ошибка причем компилятор упёрся в текст:

#error "No Target! You should use wx-config program for compilation flags!"

Я понимаю, что там есть некая программа wx-config, но я не понимаю, как её применить для моего случая.

Вопрос касается как Unix-ов, так и MAC-а (проблема абсолютно одинаковая). С Windows-ом всё заработало, а здесь…

Проверял на Debian-64, до этого пытался на Fedora-64.



Последнее исправление: Dimez (всего исправлений: 2)
Ответ на: комментарий от Odin_KG

Так ведь это просто требование иметь этот wxWidgets в установленном виде.

Нет.

Да, CMake на него наткнется, но он же ничего ставить автоматически не будет, а просто напишет, что wxWidgets отсутствует и остановится.

vcpkg разместит wxWidgets тебе в папку к исходникам, именно из нее он будет использоваться, и можно будет применять статическую линковку.

У меня и сейчас то же самое написано в этом CMakeLists.txt.

Да, но у тебя нету места откуда CMake мог бы его взять, кроме системы. А с vcpkg оно будет.

vcpkg пакетный менеджер для С++, зависимости можно хранить в той же папке что и исходный код, и вкомпилировать его статически в твое приложение.

Это наверное тебе даже более желательно чем .so? Когда .so вообще не будет, а весь код вкомпилируется в твое приложение. Как на Windows есть приложения с одним .exe файлом.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 6)
Ответ на: комментарий от MOPKOBKA

Спасибо за новую идею! Очень интересно.

Хотелось бы кое-что уточнить. Я почитал про этот vcpkg, и, как я понимаю, он дублирует встроенный пакетный менеджер, но дублирует его в своей папке, чтобы ничего не «сталкивалось». Т.е. я так понимаю, что может получится так, что этот wxWidgets будет продублирован в OS этим vcpkg, даже если он уже установлен стандартным пакетным менеджером. Но это не так страшно. А вот само применение этого vcpkg является, как бы это сказать, «нормальным явлением» ? Ведь сначала нужно поставить этот vcpkg, а уже потом через него ставить другие приложения.

Odin_KG
() автор топика
Ответ на: комментарий от Odin_KG

Через vcpkg не ставятся приложения, он только для разработки. Через него ты ставишь библиотеки которые потом используешь при компиляции. Сам пользователь приложения про vcpkg ничего не знает, и ставить его не должен. В ОС ничего он тоже не ставит.

MOPKOBKA ★★★★★
()