多平台 C++ 项目和 CMakeLists.txt 源代码中的行终止
Line termination in source for multiplatform C++ project and CMakeLists.txt
在几乎完全在 gnu-linux 下训练和工作后,我遇到了一个我必须从事的多平台项目。
我很失望地发现在 repo 中混合了 LF 和 CRLF 换行符。我注意到大多数 CRLF 是由两个提交者和 运行 dos2unix
在涉及的文件上引入的。
但是,我还注意到所有 CMakeLists.txt
文件都是以 CRLF 结尾的,即使它们来自主要开发人员的提交(他们提交了所有其他带有 LF 行结尾的来源),所以目前我让他们一个人呆着。
我不太熟悉 windows 或多平台开发,也不熟悉 cmake,我想知道:有什么约定吗?或者,是否有任何特定于 cmake 的工具甚至可以在 gnu-linux?
上生成 CRLF
如果重要的话,回购在 https://github.com/glipari/rtlib2.0
有CMake规则:
Newlines may be encoded as either \n or \r\n but will be converted to
\n as input files are read.
https://cmake.org/cmake/help/v3.3/manual/cmake-language.7.html#encoding
我知道的所有项目都使用 \n 并要求他们的开发人员相应地配置他们的编辑器。类似于尾随空格和制表符的使用。
如果您正在使用 Git,您可以要求您的开发伙伴使用 Git 提交挂钩来检查换行符。如果他们不遵守您的约定,提交将被拒绝(除非开发人员禁用它)。
在几乎完全在 gnu-linux 下训练和工作后,我遇到了一个我必须从事的多平台项目。
我很失望地发现在 repo 中混合了 LF 和 CRLF 换行符。我注意到大多数 CRLF 是由两个提交者和 运行 dos2unix
在涉及的文件上引入的。
但是,我还注意到所有 CMakeLists.txt
文件都是以 CRLF 结尾的,即使它们来自主要开发人员的提交(他们提交了所有其他带有 LF 行结尾的来源),所以目前我让他们一个人呆着。
我不太熟悉 windows 或多平台开发,也不熟悉 cmake,我想知道:有什么约定吗?或者,是否有任何特定于 cmake 的工具甚至可以在 gnu-linux?
上生成 CRLF如果重要的话,回购在 https://github.com/glipari/rtlib2.0
有CMake规则:
Newlines may be encoded as either \n or \r\n but will be converted to \n as input files are read.
https://cmake.org/cmake/help/v3.3/manual/cmake-language.7.html#encoding
我知道的所有项目都使用 \n 并要求他们的开发人员相应地配置他们的编辑器。类似于尾随空格和制表符的使用。
如果您正在使用 Git,您可以要求您的开发伙伴使用 Git 提交挂钩来检查换行符。如果他们不遵守您的约定,提交将被拒绝(除非开发人员禁用它)。