Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Travis CI复杂生成文件失败 我是使用特拉维斯CI的新手,我开始使用的C++项目使用GNU MaFe文件,MaFo文件包含许多函数,其中一个调用其他函数。我注意到在Travis CI日志中,这个函数没有成功调用其他函数,相反,它留下了一个空格,这导致构建失败。尽管它可以在任何计算机上工作_C++_Makefile_Travis Ci - Fatal编程技术网

Travis CI复杂生成文件失败 我是使用特拉维斯CI的新手,我开始使用的C++项目使用GNU MaFe文件,MaFo文件包含许多函数,其中一个调用其他函数。我注意到在Travis CI日志中,这个函数没有成功调用其他函数,相反,它留下了一个空格,这导致构建失败。尽管它可以在任何计算机上工作

Travis CI复杂生成文件失败 我是使用特拉维斯CI的新手,我开始使用的C++项目使用GNU MaFe文件,MaFo文件包含许多函数,其中一个调用其他函数。我注意到在Travis CI日志中,这个函数没有成功调用其他函数,相反,它留下了一个空格,这导致构建失败。尽管它可以在任何计算机上工作,c++,makefile,travis-ci,C++,Makefile,Travis Ci,功能是: define Compile mkdir -p $(@D) if [[ $(2) == Linking ]]; then \ $(call Print,$(2) $(@F),$(WIDTH)); \ else \ $(call PrintCpp,$(2) $(@F),$(WIDTH)); \ fi $(1) 2> $@.log; \ RESULT=$$?; \ if [ $$RESULT -ne 0 ]; then \ $(cross); \ else

功能是:

define Compile
mkdir -p $(@D)
if [[ $(2) == Linking ]]; then \
  $(call Print,$(2) $(@F),$(WIDTH)); \
else \
  $(call PrintCpp,$(2) $(@F),$(WIDTH)); \
fi
$(1) 2> $@.log; \
  RESULT=$$?; \
  if [ $$RESULT -ne 0 ]; then \
    $(cross); \
  else \
    $(check); \
  fi; \
  cat $@.log; \
  rm -f $@.log
endef
调用的函数包括:

define Line = 
$(shell printf '%0.1s' "$(2)"{1..$(1)})
endef

define Print
var="$(1)"; \
    width="$(2)";\
    printf '%s%*.*s' "$$var" 0 $$(($$width - $${#var} - 1)) "$(call 
Line,$(2),.)"
endef

define PrintCpp
var="$(1)"; \
    var=$${var%.*}.cpp; \
    width="$(2)";\
    printf '%s%*.*s' "$$var" 0 $$(($$width - $${#var} - 1)) "$(call 
Line,$(2),.)"
endef

define check =
    printf "%b\n" "$(OK_COLOR)\xE2\x9C\x94 $(NO_COLOR)"
endef

define cross =
    printf "%b\n" "$(ERR_COLOR)\xE2\x9D\x8C $(NO_COLOR)"
endef
该项目的GitHub可在以下位置找到:

这里是Travis CI日志:

我遇到了一个非常类似的问题,这是因为Travis默认情况下仍然使用不推荐的Ubuntu Trusty版本。Trusty只有GNU Make版本3,而我们需要GNU Make>4

当我将Travis切换到UbuntuXenial时,通过在我的
.Travis.yml
中添加以下内容,我的问题得到了解决:

dist: xenial
在从Trusty切换到Xenial之前,
make-v
处于。切换后,
make-v
现在处于


切换到Xenial可能需要进行一些额外的更改。例如,我不得不将我的Python版本从3.4升级到3.7。

由于您当前的travis版本不再失败,我想您已经解决了这个问题?@没有。我发现函数的嵌套调用导致了错误,但我没有找到好的解决方案。我只是选择了一个不那么复杂的makefile。