Unhappy
🙃
2 виртуалки, например
🙃
если у тебя Дебиан - debootstrap и chroot
🙃
это какбы создаёт отдельную систему, изолированную от основной, но без виртуализации (Правда и без графики, насколько я знаю)
Unhappy
conan? :)
Вроде тот что надо, но я не понимаю как сделать conan install libpng12
Unhappy
Unhappy
Хотя наверно если много конфликтующих пакетом, то тогда ок
🙃
ну да, если заточенные под это штуки типа conan подходят - тогда да, круто
🙃
просто на работе использую debootstrap и chroot чтоб в нескольких поколениях дебиана билдить
Stanislav
Unhappy
доки может почитать?
➜ ~ conan search png
There are no packages matching the png pattern
В доках написано что надо делать пакет самому
Stanislav
Unhappy
Unhappy
Я понял что в C++ все очень плохо 😔
🙃
ну смотри, debootstrap скачивает почти всю систему в отдельную папку, chroot'у ты указываешь эту папку
🙃
И все программы которые ты будешь запускать внутри chroot будут думать что корень системы - эта папка которую ты выкачал
🙃
Всё, теперь они видят либы только среды в этой папке, а не основной системы
🙃
Короче это не легко обьяснить, проще погуглить
Unhappy
а docker пробовали?
🙃
Но опять же, это хорошо работает только в дебиане, и может в убунте, и графика скорее всего работать не будет
🙃
Anton
Anton
Unhappy
Unhappy
http://blog.conan.io/2016/01/25/docker-and-conan-automated-multi-compiler-packager.html
'
Unhappy
Няшно же
Viktor
А почему нельзя поставить не по стандартному пути и использовать -L и -I?
Viktor
Тогда наверное лучше докер, либо просто vendor
Unhappy
Viktor
Ну просто сделать отдельную папочку в исходниках с кодом нужных библиотек / сабмодулями
Viktor
И собирать из сорцов
Viktor
Но это ад если зависимостей много
Viktor
Igor
если кроме libpng есть ещё различающиеся зависимости - то плюсую в сторону docker, весьма стильно, модно, и молодёжно, втом числе по сравнению с чрутом *мимоджун ни разу не пользовавшийся докером но наслушавшийся*
Viktor
Мне очень Homebrew нравится с его возможностью в одну команду переключаться между версиями формул
Viktor
Есть вроде Linuxbrew, но я не юзал
Unhappy
> и все
Unhappy
а как это сделать?
Viktor
Весь смысл динамических библиотек в том, что их используют несколько приложений
И если вся система использует одну версию, и только одной программе нужна старая никем не используемая версия, то логично либо линковать статически, либо паковать в тот же Flatpak
Berkus
пишите под мак, там это поощряется )
Berkus
линукс не для коммерческого софта. точка.
Stanislav
зависит же
Stanislav
дак а смысл?
Stanislav
у них игры весят в мегатонны больше
Stanislav
так это, смотря кому отдавать статический бинарник)
Stanislav
да я к тому что если заказчик, который будет его пускать сугубо в своем кругу, и возможно по договору ты отдаешь ему сорцы, ну не насрать ли как ты его соберешь? )
Stanislav
а, я такое делал c Qt только под винду)
Anonymous
какой порт для клиента выбрать, чтоб не было каких-то конфликтов с другими программами?
я так понимаю, можно брать любой в диапазоне 49152–65535
🙃
никакой, если можешь
🙃
ОС сама забиндид клиентский порт
🙃
на случайный свободный
Anonymous
не, не вариант
Anonymous
я вообще пишу браузерное расширение, и там общение с клиентом по заранее определенному порту должно быть
Anonymous
или какой-то протокол, по которому порты должны меняться с промежутком времени, если подключение не удалось; или 3 сторона для синхронизации портов
🙃
ну тогда пытаться забиндить на случайный порт, пока это не получится
Berkus
Anonymous
Протокол для перебора либо 3 сторона для синхронизации
Anonymous
Чтоб был идентичный порт при условии что общаться они не могут
B
Не нужно случайный. Бери любой какой нравится больше 1024
Berkus
Anonymous
ну да. просто браузерные расширения запрещают писать напрямую на диск, поэтому расширение коннектится с клиентом, а он уже пишет. хотя не суть
Anonymous
*не могут
Anatoly
Откуда к нам?
kitsu
Есть какой-нибудь способ заставить кланг не обращаться к фс слишком часто?
При использовании sshfs линковка занимает вечность
kitsu
При этом гцц отрабатывает за вменяемое время
Dmitry
🙃
А бинарники тоже на sshfs? может просто он при линковке их долго оттуда загружает?
🙃
При линковке по идее надо все необходимые бинарники в оперативу загрузить
Max
А как ретипизировать?
Я, возможно, не до конца понимаю вопрос, но этот код делает то, что надо, или нет? И если нет, то укажите что именно
#include <iostream>
#include <string>
#include <memory>
#include <typeinfo>
#include <cassert>
struct Base {
virtual std::string me() { return "Base"; }
};
struct Derived : Base {
virtual std::string me() override { return "Derived"; }
};
struct DoubleDerived : Derived {
virtual std::string me() override { return "DoubleDerived"; }
};
template <typename B, typename D>
std::shared_ptr<B> clone(std::shared_ptr<B> ptr) {
auto downcasted = std::dynamic_pointer_cast<D>(ptr);
assert(downcasted);
auto cloned = std::make_shared<D>(*downcasted);
auto upcasted = std::static_pointer_cast<B>(cloned);
return upcasted;
}
int main() {
auto bd = std::static_pointer_cast<Base>(std::make_shared<Derived>(Derived()));
auto bdd = std::static_pointer_cast<Base>(std::make_shared<DoubleDerived>(DoubleDerived()));
auto dd = std::static_pointer_cast<Derived>(std::make_shared<DoubleDerived>(DoubleDerived()));
std::cout << "-----------------Original ptrs--------------------" << std::endl;
std::cout << bd->me() << std::endl;
std::cout << bdd->me() << std::endl;
std::cout << dd->me() << std::endl;
auto bd_clone = clone<Base, Derived>(bd);
auto bdd_clone = clone<Base, DoubleDerived>(bdd);
auto dd_clone = clone<Derived, DoubleDerived>(dd);
std::cout << "------------------Cloned ptrs--------------------" << std::endl;
std::cout << bd_clone->me() << std::endl;
std::cout << bdd_clone->me() << std::endl;
std::cout << dd_clone->me() << std::endl;
}
Max
Клонируем разные варианты по иерархии типов для примера.
1. Поинтер на Base, значение Derived
2. Поинтер на Base, значение DoubleDerived
3. Поинтер на Derived, значение DoubleDerived
Evgenii
Fun with (User-Defined) Attributes http://foonathan.net/meetingcpp2017.html
kitsu
🙃
да, все там
Ну тогда надо думать как сделать кеширование
Dmitry
🙃
может быть в самом sshfs такое есть, а может самому как-то сделать чтоб бинарники были локально
🙃
потому как без загрузки этого всего в оперативу по многу раз нельзя слинковать
kitsu