多平台 C++ 项目和 CMakeLists.txt 源中的行终止
Posted
技术标签:
【中文标题】多平台 C++ 项目和 CMakeLists.txt 源中的行终止【英文标题】:Line termination in source for multiplatform C++ project and CMakeLists.txt 【发布时间】:2015-10-24 07:56:15 【问题描述】:在几乎完全在 gnu-linux 下进行培训和工作后,我遇到了一个我必须从事的多平台项目。
我很失望地发现在 repo 中混合了 LF 和 CRLF 换行符。我注意到大多数 CRLF 是由两个提交者引入的,并在相关文件上运行 dos2unix
。
然而,我也注意到所有CMakeLists.txt
文件都是 CRLF 终止的,即使它们来自主要开发人员的提交(他们已经提交了所有其他以 LF 行结尾的源),所以暂时我不理会它们。
我不太熟悉 windows 或多平台开发,也不熟悉 cmake,我想知道:有什么约定吗?或者,是否有任何特定于 cmake 的工具甚至可以在 gnu-linux 上生成 CRLF?
如果可能的话,repo 位于https://github.com/glipari/rtlib2.0
【问题讨论】:
【参考方案1】:有 CMake 规则:
换行符可以编码为 \n 或 \r\n 但将被转换为 \n 读取输入文件。
https://cmake.org/cmake/help/v3.3/manual/cmake-language.7.html#encoding
我知道的所有项目都使用 \n 并要求他们的开发人员相应地配置他们的编辑器。类似于尾随空格和制表符的使用。
如果您使用 Git,您可以要求您的开发人员使用 Git 提交挂钩来检查换行符。如果他们不遵循您的约定,则提交将被拒绝(除非开发人员禁用它)。
【讨论】:
以上是关于多平台 C++ 项目和 CMakeLists.txt 源中的行终止的主要内容,如果未能解决你的问题,请参考以下文章
用于播放/录制音频(.wav、.ogg)的 C++ 多平台库
在多个平台的解决方案中构建 Visual Studio C++ 项目