
Ekaterina
28.08.2018
08:50:17
Ха-ха) ох уж этот Т9

Дед Пегас
28.08.2018
08:50:19
Вакансии через @AlexFails в отдельный канал, пожалуйста. Читайте правилап чата.

Ekaterina
28.08.2018
08:50:24
Извините

Xessao
28.08.2018
08:50:25

Google

Дед Пегас
28.08.2018
08:50:41
Сам канал: https://t.me/ProCxxJobs

Stanislav
28.08.2018
08:51:13

Anatoly
28.08.2018
08:51:14
Вот как знал...
я даже видел как ты напрягся., чтоыб сразу удалить сообщение. Когда там уже концепты везде?

Дед Пегас
28.08.2018
08:53:44

Xessao
28.08.2018
08:53:46
ну это чутка другое же
Эмбед же, как иначе может? Не все проблемы ты документацией решаешь, иногда думать ещё нужно.

Stanislav
28.08.2018
08:54:01

Anatoly
28.08.2018
08:54:16

Stanislav
28.08.2018
08:54:49

Ruslan
28.08.2018
09:10:33
Про стандарт и фичи как-то в бекграунде только

Matwey
28.08.2018
09:11:49

Stanislav
28.08.2018
09:13:30

Matwey
28.08.2018
09:14:29

Google

Matwey
28.08.2018
09:14:34
У тебя два устройства
На одном открой screen
И на другом открой screen
У него же два распбери пая
Причем тут два приложения вообще, он на разных машинах

Stanislav
28.08.2018
09:16:26

Matwey
28.08.2018
09:17:01
Есть две Raspberry Pi, и нужно обмениваться данными, у меня получилось сделать это только по TCP, а нужно по RTU (это как бы поверх UART, если я не ошибаюсь, просто с этой либой недавно начал разбираться), может есть какие нибудь примеры на cpp, может кто-нибудь ссылку на инфу нормальную кинет )

Stanislav
28.08.2018
09:18:23

Matwey
28.08.2018
09:18:39
В многозадачных операционных системах можно иметь два окошка консоли на одной машине
В чем проблема?

Серж
28.08.2018
10:08:51
поцоны, я хочу на линукс системе иметь две версии glibc, при компиляции у конкретного приложения через:
-Wl,--rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3
задавать использование специальных версий либ.
Как мне задать это: -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 через cmake?
Все что нашел - мертвое обсуждение https://cmake.org/Bug/view.php?id=15699

Stanislav
28.08.2018
10:12:05

Серж
28.08.2018
10:13:08

Stanislav
28.08.2018
10:15:12

Серж
28.08.2018
10:17:15
дак я не понял, ты сам себе в итоге ответил?
пробовал через это - CMAKE_EXE_LINKER_FLAGS, не работало
погуглил твой совет - set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "-Wl,--dynamic-linker=/opt/lib/ld-linux.so.3") - так похоже что работает
readelf target --headers | grep interp
дает:
[Requesting program interpreter: /opt/lib/ld-linux.so.3]

Ruslan
28.08.2018
10:17:42
Или что там в шмейке

Google

Серж
28.08.2018
10:18:10
я про это не знал, мне уже подсказали, спасибо
можно дальше документацию не читать

Ruslan
28.08.2018
10:18:33
>SET_TARGET_PROPERTIES(foo PROPERTIES LINK_FLAGS -Wl,-specialFlag)
Нагуглилось сразу

Nikita
28.08.2018
10:18:46
Есть вопросец по организации CMake таргетов для такой цели: есть проект, в нем есть часть, отвечающая за работу бд. Сам модуль определяет интерфейсы в хэдерах, и есть разные реализации этих хэдеров под разные бд. Этот модуль соответственно используют другие таргеты, и плюс сам экзешник. Причем другие таргеты используют только интерфейсы из хэдеров, а имлементация создается и кидается соответственно в мейне.
Так вот, как правильно с точки зрения таргетов и их зависимостей это все организовать с симейке? Вроде бы если только используешь интерфейсный хэдер, то линковать таргет целиком смысла не имеет. Был вариант сделать отдельно таргеты для интерфейсов и для разных бэкендов, в таргетах линковаться к интерфейсам, а в главном таргете уже линковать один из реальных бэкэндов, но вот непонятно насколько это хорошее решение.

Серж
28.08.2018
10:19:21
я гуглил через cmake set ld-linux, собственно правильный запрос в гугл 90% успеха

Ruslan
28.08.2018
10:19:49
Есть вопросец по организации CMake таргетов для такой цели: есть проект, в нем есть часть, отвечающая за работу бд. Сам модуль определяет интерфейсы в хэдерах, и есть разные реализации этих хэдеров под разные бд. Этот модуль соответственно используют другие таргеты, и плюс сам экзешник. Причем другие таргеты используют только интерфейсы из хэдеров, а имлементация создается и кидается соответственно в мейне.
Так вот, как правильно с точки зрения таргетов и их зависимостей это все организовать с симейке? Вроде бы если только используешь интерфейсный хэдер, то линковать таргет целиком смысла не имеет. Был вариант сделать отдельно таргеты для интерфейсов и для разных бэкендов, в таргетах линковаться к интерфейсам, а в главном таргете уже линковать один из реальных бэкэндов, но вот непонятно насколько это хорошее решение.
Таргет для хедеров тоже норм

Серж
28.08.2018
10:20:52
похоже что роботает, под strace посмотрю не лезет ли в /lib и в продакшон

Ruslan
28.08.2018
10:21:41
дак зачем strace
ldd тебе все покажет

Серж
28.08.2018
10:21:48
ldd?


Stanislav
28.08.2018
10:21:49
Есть вопросец по организации CMake таргетов для такой цели: есть проект, в нем есть часть, отвечающая за работу бд. Сам модуль определяет интерфейсы в хэдерах, и есть разные реализации этих хэдеров под разные бд. Этот модуль соответственно используют другие таргеты, и плюс сам экзешник. Причем другие таргеты используют только интерфейсы из хэдеров, а имлементация создается и кидается соответственно в мейне.
Так вот, как правильно с точки зрения таргетов и их зависимостей это все организовать с симейке? Вроде бы если только используешь интерфейсный хэдер, то линковать таргет целиком смысла не имеет. Был вариант сделать отдельно таргеты для интерфейсов и для разных бэкендов, в таргетах линковаться к интерфейсам, а в главном таргете уже линковать один из реальных бэкэндов, но вот непонятно насколько это хорошее решение.
проблема в том что cmake пока не умеет, делать инклуды, если делаешь target_include... но он их умеет делать если target_lib


Ruslan
28.08.2018
10:22:26

Nikita
28.08.2018
10:22:29
Хочется избежать мануального прописывания путей где-либо

Ruslan
28.08.2018
10:22:42
скрипт такой, поверх ld

Серж
28.08.2018
10:22:59
понял, спасибо

Nikita
28.08.2018
10:23:18
то есть чтобы не было target_include_directories(B INTERFACE ${CMAKE_SOURCE_DIR}/path/to/libA/interfaces

Ruslan
28.08.2018
10:23:23
хз как реализовывать правильно, но идея сама валидная

Stanislav
28.08.2018
10:31:08

Google

Ruslan
28.08.2018
10:32:08
не оч
Норм, если оправдано


Igor
28.08.2018
10:35:53
Есть вопросец по организации CMake таргетов для такой цели: есть проект, в нем есть часть, отвечающая за работу бд. Сам модуль определяет интерфейсы в хэдерах, и есть разные реализации этих хэдеров под разные бд. Этот модуль соответственно используют другие таргеты, и плюс сам экзешник. Причем другие таргеты используют только интерфейсы из хэдеров, а имлементация создается и кидается соответственно в мейне.
Так вот, как правильно с точки зрения таргетов и их зависимостей это все организовать с симейке? Вроде бы если только используешь интерфейсный хэдер, то линковать таргет целиком смысла не имеет. Был вариант сделать отдельно таргеты для интерфейсов и для разных бэкендов, в таргетах линковаться к интерфейсам, а в главном таргете уже линковать один из реальных бэкэндов, но вот непонятно насколько это хорошее решение.
Я могу ошибаться, но как будто бы получаются куча таргетов db_impl1,...,db_implN, и таргет db_head с интерфейсными хедерами; в либах-модулях где нужно тыкать бд делается target_link_libraries(db_head), а в мейне target_link_libraries(main libA libB db_head db_impl1)


Nikita
28.08.2018
10:36:12
Все так

Igor
28.08.2018
10:37:45
Ок
Вопрос получается в том, насколько это торт?
Самой главной проблемой кмк будет сделать так, чтобы db_head читабельно ругался если его в конечном счете линкуют без реализации
Т.е. нужна зависимость "от хотя бы одного из Х", как это сделать в цмаке я не знаю
Без этого посыпятся куча непонятных ошибок линковки и ненайденных функций

Nikita
28.08.2018
10:41:21
Насколько распространена практика const pure virtual методов? Руки чешутся сделать такой, но с другой стороны не хочется ограничивать такими требованиями реализацию - ей тогда придётся костылять mutable полями и всё такое

Серж
28.08.2018
10:42:23
?
https://www.tldp.org/HOWTO/Serial-HOWTO-13.html
у меня прост было пару раз что два экземпляра процесса запусалось по ошибке при отладке, и конкурентно писали/читали из одного порта

Basil
28.08.2018
10:44:23
читать стандарты - для слабаков, на гитхабе всё есть. так говорил заратустра.

Nikita
28.08.2018
10:44:59

Igor
28.08.2018
10:46:02
Линковать конкретную реализацию везде и всюду в зависимости от условий

Ruslan
28.08.2018
10:46:43

Nikita
28.08.2018
10:47:51
Я боюсь оно разлуки размер билд папки тогда

Igor
28.08.2018
10:48:05
If(linux_server)
link(postgresql) elseif(win_server)
link(mssql)
else
error(unsupported)
Запихнуть в макрос и пихать везде где не нужно

Nikita
28.08.2018
10:48:47

Ruslan
28.08.2018
10:48:49
Плагинами делать
В рантайме переключаться
Обновлять проще

Google

Nikita
28.08.2018
10:49:23

Ruslan
28.08.2018
10:50:08

Nikita
28.08.2018
10:50:16
Даже если все это происходит в рантайме то мне нужно эти таргетов как-то обозначить при компиляции

Ruslan
28.08.2018
10:50:36
Потому что dlopen

Nikita
28.08.2018
10:51:18
Все статически линкуется

Egor
28.08.2018
10:52:13
Есть вопросец по организации CMake таргетов для такой цели: есть проект, в нем есть часть, отвечающая за работу бд. Сам модуль определяет интерфейсы в хэдерах, и есть разные реализации этих хэдеров под разные бд. Этот модуль соответственно используют другие таргеты, и плюс сам экзешник. Причем другие таргеты используют только интерфейсы из хэдеров, а имлементация создается и кидается соответственно в мейне.
Так вот, как правильно с точки зрения таргетов и их зависимостей это все организовать с симейке? Вроде бы если только используешь интерфейсный хэдер, то линковать таргет целиком смысла не имеет. Был вариант сделать отдельно таргеты для интерфейсов и для разных бэкендов, в таргетах линковаться к интерфейсам, а в главном таргете уже линковать один из реальных бэкэндов, но вот непонятно насколько это хорошее решение.
нормально про таргеты для интерфейсов и бекендов, их потом собираешь в ехе

Ruslan
28.08.2018
10:52:16
Тогда смысла в разделении нет

Nikita
28.08.2018
10:52:40
Я не хочу все тащить всегда

Ruslan
28.08.2018
10:52:55

Nikita
28.08.2018
10:53:05
А указывать какие имплементации мне вшить в итоговый бинарь
А те которые не нужны я и не собираю

Ruslan
28.08.2018
10:53:38
Ну, тут просто таргеты тащить определенные
Это на уровне таргета ращруливаться должно

Nikita
28.08.2018
10:54:18

Igor
28.08.2018
10:54:21
Плюс проблема размера не решается
мне кажется, если ты делаешь add_library(libA) add_library(libB) target_link_libraries(libA libB), то цмак укажет только зависимости между либами; размер увеличится только когда ты сделаешь target_link_libraries(main libA) - вот тогда он статически слинкует с мейном обе либы

Ruslan
28.08.2018
10:54:54
Там же есть чотктакое

Nikita
28.08.2018
10:55:26