Завершение строки в исходном коде для многоплатформенного проекта C++ и CMakeLists.txt

После обучения и работы почти исключительно под gnu-linux я наткнулся на мультиплатформенный проект, над которым мне придется поработать.

Я был очень разочарован, обнаружив, что в репозитории есть смесь переводов строк LF и CRLF. Я заметил, что большинство CRLF были введены двумя коммиттерами и выполняли dos2unix соответствующие файлы.

Тем не менее, я также заметил, что все файлы CMakeLists.txt завершались CRLF, даже если они исходили из коммитов основного разработчика (который коммитил все остальные исходники с окончаниями строки LF), поэтому на данный момент я оставил их в покое.

Я не очень хорошо знаком с Windows или многоплатформенной разработкой, а также с cmake, и мне было интересно: есть ли какое-то соглашение? Или есть какой-нибудь инструмент для cmake, который генерирует CRLF даже в gnu-linux?

Если это имеет значение, репозиторий находится по адресу https://github.com/glipari/rtlib2.0


person Davide    schedule 24.10.2015    source источник


Ответы (1)


Существуют правила CMake:

Новые строки могут быть закодированы как \n или \r\n, но будут преобразованы в \n по мере чтения входных файлов.

https://cmake.org/cmake/help/v3.3/manual/cmake-language.7.html#encoding

Все проекты, которые я знаю, используют \n и просят своих разработчиков соответствующим образом настроить свои редакторы. Аналогично завершающим пробелам и использованию табуляции.

Если вы используете Git, вы можете попросить своих коллег-разработчиков использовать хук фиксации Git, который проверяет наличие разрывов строк. Если они не следуют вашему соглашению, фиксация отклоняется (если только разработчик не отключит ее).

person usr1234567    schedule 24.10.2015