Advanced: Тема повышенной сложности или важная.
Название: Intra
Язык: C++11
Поддерживаемые платформы: Windows, Linux, FreeBSD, Android
Поддерживаемые компиляторы: MSVC 2015+, Clang 3.4+, g++ 4.8+
Лицензия: MIT
Описание:
Это моя библиотека, которая содержит в себе следующий функционал:
Кроме самой библиотеки (модулей Core, Audio, Image) в репозитории также находятся:
Ссылка на репозиторий: https://github.com/gammaker/Intra
С помощью Travis CI реализована автоматическая сборка и тестирование всего, что попадает в репозиторий в 3 различных конфигурациях x 2 компилятора (GCC 4.8 и Clang 3.5). Теперь многие поломки не будут оставаться незамеченными и будут исправляться сразу.
gammaker
> up
lol
CapSopener
> lol
Спасибо, что апнул, теперь я могу убрать свой up.
Вроде кто-то хотел устроить code review, где он?
Зачем в репозитории левые файлы, например студии и тд?
на линуксе у меня не собирается
HardMorg
> Зачем в репозитории левые файлы, например студии и тд?
Почему левые? Я помимо CMakeLists.txt предоставляю нативный проект студии с несколькими конфигурациями и настройками. Я считаю, это более удобно, чем проекты, сгенерированные CMake. К тому же я пока не до конца разобрался с CMake, чтобы полностью заменить им студию. Пока CMakeLists.txt на уровне "собирает с настройками по умолчанию и ладно".
Build - для тех, кому лень компилить и кто просто хочет запустить и потестить.
HardMorg
> на линуксе у меня не собирается
Ну в общем-то я это ожидал, у меня руки не дошли проверить на GCC. Хотя если попробовать Clang'ом, то есть вероятность, что соберётся.
cmake может генерить студиный проект, нафига захламлять репозиторий, бинари тоже никто не выкладывает... у меня линукс, но допустим у меня винда, и тоже проблемы могут быть, разный рантайм.
Снова таки с помощь смейка, можно было генерить разные проекты.. например просто собрать твою либу, что бы ее можно было подключить к своему проекту, или же собрать отдельно тесты.. и тд, короче нужно по человечески сделать, тут просто каша
gammaker
> Ну в общем-то я это ожидал, у меня руки не дошли проверить на GCC. Хотя если
> попробовать Clang'ом, то есть вероятность, что соберётся.
>
>
У меня смейк с ошибкой валится... может быть сам код и нормально бы скомпилился
Окей, посмотрим...
forceinline-дроч не нужен.
Русские каменты - тем более..
Табы не нужны.
> core::forward
Што это?
> Meta::TypeEquals<U, wchar_t>::_
Што это?
А примеры красивые. Стремные, но красивые.
PS: Плюсик за натвис.
CMakeFileList.txt это шо? для это есть file команда симейка.
Короче смейк не собирал потому что не мог найти файлы тестов
-Eugene-
> core::forward
присоединяюсь, шо это core::addressof ?
-Eugene-
> forceinline-дроч не нужен.
Если forceinline заменить на inline, производительность в некоторых тестах падает на 20%. И даже бинарник распухает, хотя как бы ожидается наоборот, что он из-за forceinline должен распухать.
-Eugene-
> Русские каменты - тем более..
Вообще-то это в основном документация, которую я буду генерировать, когда таких комментариев накопится некоторая критическая масса. А потом планирую английский язык добавлять. Будет документация на двух языках. От родного русского я отказываться не собираюсь.
-Eugene-
> Табы не нужны.
Это ещё почему? Я знаю, что есть на эту тему холивары, но особо в них не участвовал. Я не нашёл ни одной причины, почему табы нежелательны.
-Eugene-
> Што это?
Это отказ от STL и вообще всех стандартных и сторонних хидеров в моих хидерах. А этот требует объявления своих forward, move, memcpy, и реализации своих type_traits, которые кстати более читабельные и компактные, и вообще обеспечивают единство стиля моей библиотеки.
-Eugene-
> А примеры красивые. Стремные, но красивые.
Чем стремные?
-Eugene-
> PS: Плюсик за натвис.
Кстати, да, забыл его упоминуть. Даже сложные диапазоны с ним становятся легко читабельными и отлаживаемыми. И в отличие от STL у меня сразу отображается несколько элементов контейнера без его раскрытия в отладчике.
HardMorg
> У меня смейк с ошибкой валится... может быть сам код и нормально бы скомпилился
Что за ошибка? У меня под виндой всё без ошибок.
HardMorg
> cmake может генерить студиный проект, нафига захламлять репозиторий
Я же написал, что родной настроенный руками студийный проект удобнее и функциональнее. По крайней мере, пока я не разобрался со всеми тонкостями CMake. По моему он ничем не мешает. Основной мусор я выкинул. Кстати, тем, кто использует мой проект студии, учитите, что промежуточные файлы складываются в папку Cache на уровне выше, чем Solution. В моём случае эта папка представляет собой папку на рамдиске и подчищается автоматически при перезагрузке.
HardMorg
> Снова таки с помощь смейка, можно было генерить разные проекты.. например
> просто собрать твою либу, что бы ее можно было подключить к своему проекту, или
> же собрать отдельно тесты..
Ну так есть же CMake, при чём тут тогда студийный проект? Надо просто разобраться, что там за ошибки под линуксом...
HardMorg
> CMakeFileList.txt это шо? для это есть file команда симейка.
Это список файлов, которые нужно включить. file добавит всё подряд, но не всегда нужно добавлять всё подряд. Иногда бывают мёртвые исходники, которые не нужно включать в сборку, но не хочется выносить наружу. И ещё у file(GLOB ...) есть проблема, что CMake сам не обнаружит изменений и не перестроит проект, когда надо. Поэтому его не рекомендуют использовать.
HardMorg
> присоединяюсь, шо это core::addressof ?
Это аналог std::addressof. Как я уже объяснил, это чтобы отвязаться от всех хидеров кроме своих.
gammaker
> Ну так есть же CMake, при чём тут тогда студийный проект? Надо просто
> разобраться, что там за ошибки под линуксом...
>
>
При том что это говнокод, если бы мне нужен был студи ный проект я бы загенерил его одной кномкой, посмотри какой-нибудь опен сорс проект, как там все делают
gammaker
> Если forceinline заменить на inline, производительность в некоторых тестах
> падает на 20%. И даже бинарник распухает, хотя как бы ожидается наоборот, что
> он из-за forceinline должен распухать.
В релизе? Серьезно? Хм, интересно было бы это изучить.
> Это ещё почему? Я знаю, что есть на эту тему холивары, но особо в них не
> участвовал. Я не нашёл ни одной причины, почему табы нежелательны.
Наверное потому, что имеют произвольную длину? В Notepad код выглядит одним образом, в Notepad++ - вторым, в FAR-е - третьим, в гите - четвертым, а в студии пятым. Ну и нахрен такое надо?
А настройка ширины табов под себя - это миф. Если код хорошо оформлен, ему это не нужно, а если плохо - он просто расползется еще больше.
> Это аналог std::addressof
Почему имена не в нотации всей библиотеки?
И ты не ответил про _
Что это за хрень?
> Чем стремные?
Рефлекторное отторжение необычных конструкций и громоздких библиотек, пожалуй. И все.
gammaker
> Это список файлов, которые нужно включить. file добавит всё подряд, но не
> всегда нужно добавлять всё подряд. Иногда бывают мёртвые исходники, которые не
> нужно включать в сборку, но не хочется выносить наружу. И ещё у file(GLOB ...)
> есть проблема, что CMake сам не обнаружит изменений и не перестроит проект,
> когда надо. Поэтому его не рекомендуют использовать.
Так ты можешь отфильтровать то что тебе не нужно, какие проблемы?
Да, смайк не может узначить что были добавлены новые файлы.., ну ок.. тебе нужно просто снова запустить симейк и все, а так тебе нужно постоянно править CMakeFileList.txt этот файл, а если проект большой сотны а то и тысячи файлов, все так добавлять?
И вообще, нафига нужен тот код который не будет собираться??? тогда держи его локально и добавишь в репозиторий когда он будет нужен
Тема в архиве.