Size: a a a

2020 June 19

ПК

Побитый Кирпич... in pro.cxx
Генерал
А .a что тогда?
.a это статическая на линупсе
источник

v

vehlwn in pro.cxx
Генерал
есть какой-то гайд как создать dll а потом использовать в другой программе?
add_library(liba_name SHARED lolo.cpp)
Я создал. Подключай
target_link_libraries(${TARGET_NAME} liba_name)
источник

MM

Mikhail Matrosov in pro.cxx
Вопрос про модули. Правильно ли я понимаю, что, вообще говоря, мы можем весь код помещать в .cppm - module interface units? Просто не будем экспортить то, что клиентам не интересно. И ничто не мешает нам начать думать в модели того же C#, где никто не разделяет по разным файлам объявления и определения.
источник

YB

Yura Blok in pro.cxx
Mikhail Matrosov
Вопрос про модули. Правильно ли я понимаю, что, вообще говоря, мы можем весь код помещать в .cppm - module interface units? Просто не будем экспортить то, что клиентам не интересно. И ничто не мешает нам начать думать в модели того же C#, где никто не разделяет по разным файлам объявления и определения.
Как тогда без разделения спрятать от клиентов реализацию? Скомпиленный файл модуля нельзя распространять
источник

АК

Александр Караев... in pro.cxx
Yura Blok
Как тогда без разделения спрятать от клиентов реализацию? Скомпиленный файл модуля нельзя распространять
это не та задача, которую должны решать модули
источник

AD

Andrey Davydov in pro.cxx
Mikhail Matrosov
Вопрос про модули. Правильно ли я понимаю, что, вообще говоря, мы можем весь код помещать в .cppm - module interface units? Просто не будем экспортить то, что клиентам не интересно. И ничто не мешает нам начать думать в модели того же C#, где никто не разделяет по разным файлам объявления и определения.
Правильно. Но в C# минимальная единица компиляции assembly и их это устраивает по скорости, и в C++ придется после каждого изменения (в т.ч. имлементации) перекомпилировать существенно больше одного translation unit-а.
источник

YB

Yura Blok in pro.cxx
Александр Караев
это не та задача, которую должны решать модули
И я о том же
источник

MM

Mikhail Matrosov in pro.cxx
Andrey Davydov
Правильно. Но в C# минимальная единица компиляции assembly и их это устраивает по скорости, и в C++ придется после каждого изменения (в т.ч. имлементации) перекомпилировать существенно больше одного translation unit-а.
Окей, разумно. А что является артефактом сборки модуля? Т.е. если я правильно понял, модуль состоит из одного module interface unit и от 0 до N module implementation unit. Каждый из них компилируется в свою единицу трансляции. А есть ли какой-то общий для них всех артефакт?
источник

MM

Mikhail Matrosov in pro.cxx
Сейчас я довольно легко по мере надобности создаю новые хедеры. Значит ли это, что я могу в таком же стиле по мере надобности для своего проекта создавать новые модули? И в одном проекте у меня будет куча никому не интересных модулей?
источник

AD

Andrey Davydov in pro.cxx
Mikhail Matrosov
Окей, разумно. А что является артефактом сборки модуля? Т.е. если я правильно понял, модуль состоит из одного module interface unit и от 0 до N module implementation unit. Каждый из них компилируется в свою единицу трансляции. А есть ли какой-то общий для них всех артефакт?
Общий для всех артефакт есть, это CMI (BMI). Советую посмотреть https://www.youtube.com/watch?v=bDTm6y6fNSU, там подробно про это рассказано.
источник

MM

Mikhail Matrosov in pro.cxx
Andrey Davydov
Общий для всех артефакт есть, это CMI (BMI). Советую посмотреть https://www.youtube.com/watch?v=bDTm6y6fNSU, там подробно про это рассказано.
я смотрел. и у меня сложилось впечатление, что это артефакт прекомпиляции cppm файла
источник

MM

Mikhail Matrosov in pro.cxx
а вовсе не всего модуля
источник

AD

Andrey Davydov in pro.cxx
А, я понял о чем ты. Тогда ответ "нет" какого-то другого общего артефакта не создается.
источник

MM

Mikhail Matrosov in pro.cxx
Andrey Davydov
А, я понял о чем ты. Тогда ответ "нет" какого-то другого общего артефакта не создается.
ага, понятно, спасибо
источник

MM

Mikhail Matrosov in pro.cxx
Mikhail Matrosov
Сейчас я довольно легко по мере надобности создаю новые хедеры. Значит ли это, что я могу в таком же стиле по мере надобности для своего проекта создавать новые модули? И в одном проекте у меня будет куча никому не интересных модулей?
а вот это можешь прокомментировать?
источник

AD

Andrey Davydov in pro.cxx
Какого размера должны быть модули — как один translation unit или как целая библиотека вопрос философский.
Как известно, С++20 modules это синтез усилий Microsoft и Google, и по замыслу Microsoft модули должны быть крупными — по замыслу Google размером с translation unit.
источник

AD

Andrey Davydov in pro.cxx
Что значит "никому не интересных" в твоем сообщении я не понял.
источник

MM

Mikhail Matrosov in pro.cxx
Ну вот я хочу сделать функцию util(), которую буду везде у себя использовать, но экспортировать клиентам из проекта (библиотеки) не хочу
источник

MM

Mikhail Matrosov in pro.cxx
если библиотека это один большой модуль, то где мне объявить функцию util()?
источник

MM

Mikhail Matrosov in pro.cxx
меня вообще этот вопрос интересует в рамках подготовки доклада :) и я хочу понять, как правильно объявлять константы в модулях. если они экспортируются, то тут всё вроде понятно.
export constexpr T x = value;
источник