我正在尝试使用此仓库:

https://github.com/CMU-Perceptual-Computing-Lab/MonocularTotalCapture

这些是我已经安装的软件包:

ffmpeg
Python 2.7.12 (with TensorFlow 1.5.0, OpenCV, Matplotlib, packages installed with pip3)
openCV 4.2.0
cmake = 3.5.1
OpenCV 2.4.13 (compiled from source with CUDA 9.0, CUDNN 7.0)
Ceres-Solver 1.13.0 (with SuiteSparse)
OpenGL, GLUT, GLEW
libigl https://github.com/libigl/libigl
wget
OpenPose
eigen3, version 3.3.7
Boost version: 1.58.0
GNU 5.4.0

不幸的是,我最后得到一个错误,并且我不知道如何解决。
-- Build files have been written to: /home/ziom/Scrivania/MonocularTotalCapture/FitAdam/build

mario@ziom-Z87-HD3:/home/ziom/Scrivania/MonocularTotalCapture/FitAdam/build# make -j12

/home/ziom/Scrivania/MonocularTotalCapture/FitAdam/src/AdamFastCost.cpp: In member function ‘void AdamFullCost::SparseRegress(const Eigen::SparseMatrix<double, 0>&, const double*, const double*, const double*, const double*, double*, double*, double*, double*) const’:
/home/ziom/Scrivania/MonocularTotalCapture/FitAdam/src/AdamFastCost.cpp:1200:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int ic = 0; ic < total_vertex.size(); ic++)
^
/home/ziom/Scrivania/MonocularTotalCapture/FitAdam/src/AdamFastCost.cpp:1225:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int ic = 0; ic < total_vertex.size(); ic++)
^
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/mylib.dir/all' failed
make[1]: *** [CMakeFiles/MYLIB.dir/all] Errore 2
Makefile:83: recipe for target 'CMakeFiles/mylib.dir/all' failed
make: *** [all] Errore 2

最佳答案

开始在评论中输入对此的回复,但时间太长...所以我只想回答。

您所拥有的显然是2条警告,但失败却有2条错误。那就是-Werror所做的。现在,您对-Wno-error所做的操作应该可以正常工作,但是如果后面跟随-Werror,则可以将其覆盖。例如,如果我使用gcc构建一个简单的程序,如下所示:

gcc -Wno-error -Werror test.c
-Werror命令已覆盖-Wno-error命令。我只是查看了该项目中的CMakeLists.txt文件,但没有看到-Werror的任何提及。由于默认情况下处于关闭状态,因此它必须在某个位置。这是该项目的CMakeLists.txt文件的摘录:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")

我认为可以为-Werror${OpenMP_C_FLAGS}设置${OpenMP_CXX_Flags}。要对此进行测试,可以使用cmake的message函数。在CMAKE_CXX_FLAGS分配之后添加以下行:
message("CFlags: ${CMAKE_C_FLAGS} CXXFlags: ${CMAKE_CXX_FLAGS}")

我的理论是,您将在某处找到-Werror。如果是这种情况,只需在CMakeLists.txt的这两行(8和10)的末尾添加-Wno-error:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} -Wno-error")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Wno-error")

尾随的-Wno-error将覆盖其中的所有-Werror。也许可以使用更纯净的cmake解决方案来解决此问题,但我不是cmake专家。

09-25 21:22