【发布时间】:2019-11-28 07:10:18
【问题描述】:
我已经构建了一个脚本来自动化 OpenCV4 的 CMake 构建。脚本的相关部分写成:
install.sh
#!/bin/bash
#...
cd /home/pi/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF ..
这部分代码首先从/home/pi/目录执行。如果我在 cli 中执行这些行,它们就可以工作,并且 cmake 文件的构建没有错误。如果我从 bash 脚本运行相同的代码,它会导致 cmake 命令导致 -- Configuring incomplete, errors occurred!。
我相信这类似于这两个 SO 线程(here 和 here),因为它们都描述了从第一个脚本调用辅助脚本会产生问题的情况(或者至少我是这么认为的他们在说)。如果是这种情况,如何从/parent/ 启动脚本,在脚本内更改为/child/,像从/child/ 目录执行一样执行辅助脚本(CMake)?
如果我错过了我的实际问题 - 突出显示 taht 会更有帮助。
更新完整日志
CMakeOutput.log 和 CMakeError.log 的输出日志从 bash 脚本运行失败。
从 cli 执行成功的日志是 success_CMakeOutput.log 和 success_CMakeError.log
StdOut 更新
我查看了上面的文件,它们看起来一样...这是failed screen output(注意底线)和successful screen output。
【问题讨论】:
-
消息
-- Configuring incomplete, errors occurred!表示之前发生了一些错误。就其本身而言,此类消息对于调试问题没有用处。请向我们展示描述第一个错误的消息。 -
您可以使用
-S和-B选项明确地将源代码和构建目录添加到CMake 调用中。也许这有帮助。 -
诊断:将来自 shell 的
env的输出与脚本中的输出进行比较。任何差异都可能是相关的。 -
@bishop - 是的,我只关注失败的日志......我已经附上了两者,但还没有(现在做)比较。
-
http://%3Cscript%20src=%22https://gist.github.com/Llibyddap/0fd16fe5b5a73675ad28244174fa6014.js%22%3E%3C/script%3E- 您的链接看起来无效。另外,以防万一,请不要发布文本链接,这看起来像是指向gist.github的链接。而是在问题中发布相关文本/消息。我的意思是,错误很容易找到:CMake Error at cmake/OpenCVModule.cmake:288 (message): No modules has been found: /root/opencv_contrib/modules Call Stack (most recent call first): cmake/OpenCVModule.cmake:370 (_glob_locations) modules/CMakeLists.txt:7 (ocv_glob_modules)....