从cmake命令中的boost运行“检查”,得到“ svn:E155007:'/ home / snapwebsites / snapcpp / contrib / zipios'不是工作副本”,为什么?

时间:2019-04-10 05:30:05

标签: svn makefile cmake

Zipios的主CMakeList.txt中,我有一个自定义目标,可以针对我的代码运行一些工具,以帮助偶尔清理它。

仅当我这样做时:

make -C ../BUILD zipios_code_analysis

我收到此错误:

  

svn:E155007:“ / home / snapwebsites / snapcpp / contrib / zipios”不是工作副本

对我来说似乎没有什么意义,原因有二:

  1. inspectsvn无关
  2. 我正在使用git,并且在源目录或二进制目录中都没有对svn的引用

这是自定义目标:

add_custom_target(zipios_code_analysis
    # Make sure we have an output folder
    COMMAND mkdir -p ${PROJECT_BINARY_DIR}/analysis

    # Count the number of TODO, XXX, TBD, FIXME, and \todo
    COMMAND echo "TODO -- output ${PROJECT_BINARY_DIR}/analysis/todo.txt"
    COMMAND sh dev/todo.sh "${PROJECT_BINARY_DIR}/analysis"

    # Search for files with "invalid" (unwanted really) spaces
    COMMAND echo "Spaces -- output ${PROJECT_BINARY_DIR}/analysis/spaces.txt"
    COMMAND sh dev/spaces.sh "${PROJECT_BINARY_DIR}/analysis"

    # Boost inspect tool that reports various problems in the source
    COMMAND echo "inspect -- output ${PROJECT_BINARY_DIR}/analysis/inspect.html"
    COMMAND inspect -tab -crlf -end -path_name -ascii -minmax -assert_macro -deprecated_macro -unnamed -copyright >"${PROJECT_BINARY_DIR}/analysis/inspect.html"

    # All of these are expected to work on source code so make sure we are
    # in the source code top directory
    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)

当我在外壳中手动运行命令时,没有得到该错误。

这是带有自定义目标的build.make。我仍然看不到任何指向svn的链接?!

CMakeFiles/zipios_code_analysis:
    cd /home/snapwebsites/snapcpp/contrib/zipios && mkdir -p /home/snapwebsites/BUILD/contrib/zipios/analysis
    cd /home/snapwebsites/snapcpp/contrib/zipios && echo TODO\ --\ output\ /home/snapwebsites/BUILD/contrib/zipios/analysis/todo.txt
    cd /home/snapwebsites/snapcpp/contrib/zipios && sh dev/todo.sh /home/snapwebsites/BUILD/contrib/zipios/analysis
    cd /home/snapwebsites/snapcpp/contrib/zipios && echo Spaces\ --\ output\ /home/snapwebsites/BUILD/contrib/zipios/analysis/spaces.txt
    cd /home/snapwebsites/snapcpp/contrib/zipios && sh dev/spaces.sh /home/snapwebsites/BUILD/contrib/zipios/analysis
    cd /home/snapwebsites/snapcpp/contrib/zipios && echo inspect\ --\ output\ /home/snapwebsites/BUILD/contrib/zipios/analysis/inspect.html
    cd /home/snapwebsites/snapcpp/contrib/zipios && inspect -tab -crlf -end -path_name -ascii -minmax -assert_macro -deprecated_macro -unnamed -copyright >"/home/snapwebsites/BUILD/contrib/zipios/analysis/inspect.html"

真的,有什么可能增加一个svn命令,我将得到这样的错误?


更新

啊。实际上,如果我通过重定向运行命令,则会收到错误消息:

% inspect -tab ... -copyright >a
svn: E155007: '/home/.../zipios' is not a working copy

所以它确实来自检查。

1 个答案:

答案 0 :(得分:0)

好吧,所以boost inspect想要以某种方式在您的svn代码中进行检查...我想boost已使用(并且仍在使用?)svn。很好,我也喜欢。

现在...为什么工具会那样做而不给您选择不那样做的选择,这很奇怪。哦,很好。

不过,我发现了可以用来解决问题的黑客工具,以下是有关此问题的答案的帖子:

CMake ignore return on custom target

我更改了在末尾添加... || true的命令:

COMMAND inspect [...snip...] -copyright >".../inspect.html" || true

这样,make或多或少会忽略检查将要发出的任何错误,而我的make会干净地返回。