Closed roachsinai closed 5 years ago
slambook/ch4/useSophus/CMakeLists.txt
find_package( Sophus REQUIRED ) include_directories( ${Sophus_INCLUDE_DIRS} ) add_executable( useSophus useSophus.cpp ) target_link_libraries( useSophus ${Sophus_LIBRARIES} )
slambook/3rdparty/Sophus
git checkout a621ff
上面这种也就是高老师书中所述的情况下,直接编译Sophus会出现给左值赋值错误,lvalue required as left operand of assignment。
Sophus
lvalue required as left operand of assignment
在slambook/3rdparty/Sophus/CMakeLists.txt中制定使用c++03编译就可以了:add_definitions(-std=c++03)。 然后正常编译ch4运行就可以了。
slambook/3rdparty/Sophus/CMakeLists.txt
c++03
add_definitions(-std=c++03)
ch4
看到解决方法原因应该比较明了:使用的老代码,但是编译的时候使用的新标准(可能默认c++11)。
上面给的连接第一个是给出了直接编译Sophus最新代码的并使用的方法,但是这个方法也不是再新了,比如会提示SO3是已经弃用的类型。
虽然可以正常运行了,但是实在想不明白ch4中cmake是如何找到sophus的?!希望知道的告知一下。
cmake
sophus
Search Procedure
代码环境
slambook/ch4/useSophus/CMakeLists.txt
slambook/3rdparty/Sophus
上面这种也就是高老师书中所述的情况下,直接编译
Sophus
会出现给左值赋值错误,lvalue required as left operand of assignment
。解决方法
在
slambook/3rdparty/Sophus/CMakeLists.txt
中制定使用c++03
编译就可以了:add_definitions(-std=c++03)
。 然后正常编译ch4
运行就可以了。问题原因
看到解决方法原因应该比较明了:使用的老代码,但是编译的时候使用的新标准(可能默认c++11)。
Refs
上面给的连接第一个是给出了直接编译
Sophus
最新代码的并使用的方法,但是这个方法也不是再新了,比如会提示SO3是已经弃用的类型。疑问
虽然可以正常运行了,但是实在想不明白
ch4
中cmake
是如何找到sophus
的?!希望知道的告知一下。Search Procedure