Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » cmake + shared lib + msvc + gcc + rc

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

destiny child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Собсно вопрос - как корректно написать cmake проект/файлы, чтобы учесть по минимуму что:
1) собирается библиотека, динамическая, под винду и 32 и 64 битная - со своим именем/расширением.
2) сборка разрешается и студией 2010+ и mingw32/64(gcc). И со своими флагами/настройками, присущими этим системам сборки (сейчас их нет в голове - но в примере же что-то "особенное" можно показать)
3) у либы как и у обычного ехе файла под виндой должен быть раздел "О версии", который просматривается проводником винды, т.е. какой-то шаблон versionfile.rc.cmake.in - минимальный и необходимый и как он заполняется - где берутся переменные, использованные в нем.
вроде как вот минимум:

Код:
 
            VALUE "CompanyName", "имя компании"
            VALUE "FileDescription", "описание библиотеки/файла/продукта"
            VALUE "FileVersion","@PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, 0"
            VALUE "InternalName", "@PROJECT_NAME@"
            VALUE "LegalCopyright", "Copyright (c) 2022 Company Ltd."
#ifdef _DEBUG
            VALUE "OriginalFilename", "@PROJECT_NAME@D.dll"
#else
            VALUE "OriginalFilename", "@PROJECT_NAME@.dll"
#endif
            VALUE "ProductName", "@PROJECT_NAME@"
            VALUE "ProductVersion","@PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, 0"
 

4) сборка должна проходить в отдельной каталоге build и с раcкладкой в подпапки build\.... по битности и дебаг/релиз состоянию.

Всего записей: 3868 | Зарегистр. 01-04-2006 | Отправлено: 17:50 09-12-2022 | Исправлено: destiny child, 10:59 10-12-2022
useretail



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny child
называется много хочешь, да мало получишь
первое что приходит в голову это создавать для каждой разрядности свой тулчейн и собирать по порядку в нужные папки
если найду старые проекты, то посмотрю как там дело было

Всего записей: 4985 | Зарегистр. 14-09-2007 | Отправлено: 02:01 23-12-2022
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny child
Понятное дело, что как писать cmake'и, лучше смотреть в интернете. Организовать их структуру тоже можно совершенно по-разному -- тут каждый сам кузнец своего буратино.
И хоть возможную структуру cmake'ов я от Вас утаил, но соображениями на счет п.3 поделиться, вполне, могу. В идеале, это должно делаться через систему версионного контроля (VCS). Под CompanyName и LegalCopyright я бы завел отдельный проект, откуда бы все проекты компании брали эти данные. Если VCS нормальная (то есть, не git), то она будет централизованная (в корпорациях только такие и должны быть) и там будет монотонно возрастающий changelist number, который автоматом даст PROJECT_VERSION_PATCH (у гита это sha хэш, который и Вас и Ваших клиентов сведет с ума). Остальное все запихивается в метаданные потока/ветки или как оно там в Вашей системе будет называться. Имея все это собрать виндовую структуру VERSIONINFO будет делом техники и сделать это можно хоть из bat-файла, любая сборочная система имеет хоть какие-то скриптовые возможности и с этим точно управится.
Если же у Вас git, то абсолютно все проекты, что я видел на githab'е, ведут эти цифры и буквы вручную, зачастую в заголовочных файла С/С++. Не делайте этого. Если уж совсем все так плохо, придумайте хранить это в файлах cmake'а или в отдельном текстовом файле. Напишите инструкцию и штрафуйте всех, кто забудет после каждого commit'а эти цифры поменять.

Всего записей: 1258 | Зарегистр. 10-04-2003 | Отправлено: 04:06 24-12-2022
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » cmake + shared lib + msvc + gcc + rc


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru