我已经构建了一个脚本来自动化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线程(此处和此处)相似,因为它们都描述了从第一个脚本调用辅助脚本会导致问题的情况(或者至少我认为他们在说这话)。如果是这种情况,如何从中启动脚本/parent/,更改为/child/脚本中的脚本,然后像从/child/目录中执行一样执行辅助脚本(CMake)?
如果我错过了我的实际问题-高亮显示htht会更有帮助。
使用完整日志更新
无法从bash脚本运行CMakeOutput.log和CMakeError.log的输出日志。
从cli执行时,成功的日志为success_CMakeOutput.log和success_CMakeError.log
在StdOut上更新
我浏览了上面的文件,它们看起来相同...这是失败的屏幕输出(注意底线)和成功的屏幕输出。
您正在root使用/root主目录的用户身份运行脚本,而该opencv_contrib目录位于/home/pi目录中。该/home/pi是最有可能在用户的主目录pi。
更新:
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
有正确的道路opencv_contrib。无论是提供opencv_contrib在根用户的主目录下,如果你的目标是运行脚本作为根,或提供完整的,无依赖HOME,路径opencv_contrib目录。
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv_contrib/modules \
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。