【发布时间】:2016-12-29 05:36:03
【问题描述】:
我已阅读this,其中建议进行以下编译检查:
installCheck () {
if g++ check_opencv.cpp -o check_opencv; then
return 1
else
rm check_opencv
return 0
fi
}
if installCheck $0; then
echo "OpenCV already installed, skipping"
exit 0
fi
但是,运行此脚本会给出:
check_opencv.cpp:2:33: fatal error: opencv2/core/core.hpp: No such file or directory
compilation terminated.
rm: check_opencv: No such file or directory
OpenCV already installed, skipping
这是错误的。然后我改成这样:
installCheck () {
g++ check_opencv.cpp -o check_opencv
if [[ $? -ne 0 ]]; then
而且效果很好:
check_opencv.cpp:2:33: fatal error: opencv2/core/core.hpp: No such file or directory
compilation terminated.
Cloning into 'opencv-2.4.9'...
这是为什么呢?因为[[ 或g++ 的某些行为?
this 中的某人说“遗憾的是,make 返回 0 天气或不失败。” g++ 在失败时不应该总是返回非零值吗?也许我错过了一些明显的东西,所以请为我澄清一下。非常感谢!
更新:事实证明我对 bash 的理解是错误的。返回值 0 在 bash 中计算为 true,这与我之前的想法相矛盾。 This 有帮助。
【问题讨论】: