编译环境windows cygwin64,gitlab上clone的代码不能编译通过,而本地提交到gitlab的代码可以通过,报错信息指向automake-1.15
错误1
Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/${ <-- HERE ([^ \t=:+{}]+)}/ at /usr/bin/automake line 3936
分析与解决
此处是由于automake-1.15存在历史bug,查看github,改问题后续已经修复,因为是2016年左右的bug,现在最新版本automake已经是1.15.1,故不考虑从修改automake上解决
错误2
Makefile.am:1851: error: unterminated conditionals:WINDOWS_TRUE
分析与解决
经过查询,发现报这样的错应该是宏定义不匹配造成的,于是查找makefile文件,找到最后发现问题出现在make Makefile上 make --help 发现有选项-d 可以打印debug信息 执行make -d Makefile,发现输出信息中有比对aclocal.m4 configure.ac Makefile.in等文件新旧 其中Makefile.am acinclude.m4 configure.ac aclocal.m4必须比Makefile.in旧 configure.ac必须比aclocal.m4旧,如果前提文件新的话,会导致后面的文件重新生成 可以查看这篇blog讲述了aclocal.m4 makefile.in makefile.am configure之间的关系
错误3
git 上传代码时候会转换换行符
解决办法
git config --global core.autocrlf false
git config --global core.filemode false
git config --global core.safecrlf true
复制代码
错误4
换行符\r导致编译不起来
解决办法
通过dos2unix命令进行转换,cygwin64需要手动去安装这个安装包