gpt4 book ai didi

c++ - 将用于终端编译的g++命令转换为CMakeLists.txt

转载 作者:行者123 更新时间:2023-12-02 10:35:16 26 4
gpt4 key购买 nike

我是CMake的初学者,我正在尝试遵循当前正在从事的项目的教程。可以在这里找到该教程:https://gepettoweb.laas.fr/doc/stack-of-tasks/pinocchio/master/doxygen-html/index.html#OverviewInstall(部分:使用C++和Python的更复杂的示例)。
在某些时候,本教程提供了一个用于编译的g++命令,但是由于我项目的特殊性,我不能使用终端,而必须将此命令转换为CMakeLists.txt。这是命令:

g++ -I /path/to/eigen -I /path/to/pinocchio/include/ -DPINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR -DPINOCCHIO_WITH_URDFDOM overview-urdf.cpp -lboost_system -lurdfdom_model -o overview-urdf

我的问题涉及命令的第二部分,从标志开始。我添加了我的可执行文件和第两个路径,然后编写了这个代码:
target_compile_definitions(overview-urdf PUBLIC PINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR PINOCCHIO_WITH_URDFDOM)
target_link_libraries(overview-urdf /usr/lib/x86_64-linux-gnu/libboost_system.so)
target_link_libraries(overview-urdf /opt/ros/foxy/lib/liburdfdom_world.so)

但是,如果我尝试构建所有内容,则编译会失败并在我使用的Pinocchio库中的文件中指示错误(该文件未修改,并且未声明git问题)。指示问题的函数似乎都与PINOCCHIO_URDF_SHARED_PTR有关,因此,我希望我将标记插入CMakeLists的方式存在问题。

我希望它足够清楚。提前致谢!

编辑:错误消息的提取
In file included from /opt/openrobots/include/pinocchio/parsers/urdf.hpp:261:0,
from testPinocchio.cpp:1:
/opt/openrobots/include/pinocchio/parsers/urdf/geometry.hxx:256:7: error: template-id ‘getLinkGeometry<urdf::Collision>’ for ‘urdf::CollisionConstSharedPtr pinocchio::urdf::details::getLinkGeometry(urdf::LinkConstSharedPtr)’ does not match any template declaration
getLinkGeometry< ::urdf::Collision>(const ::urdf::LinkConstSharedPtr link)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/openrobots/include/pinocchio/parsers/urdf/geometry.hxx:252:7: note: candidate is: template<class T> boost::shared_ptr<const T> pinocchio::urdf::details::getLinkGeometry(urdf::LinkConstSharedPtr)
getLinkGeometry(const ::urdf::LinkConstSharedPtr link);


这是对应的代码摘录;来自Pinocchio的git上的相应文件:
template<typename T>
inline PINOCCHIO_URDF_SHARED_PTR(const T)
getLinkGeometry(const ::urdf::LinkConstSharedPtr link);

template<>
inline ::urdf::CollisionConstSharedPtr
getLinkGeometry< ::urdf::Collision>(const ::urdf::LinkConstSharedPtr link)
{
return link->collision;
}

template<>
inline ::urdf::VisualConstSharedPtr
getLinkGeometry< ::urdf::Visual>(const ::urdf::LinkConstSharedPtr link)
{
return link->visual;
}

最佳答案

尝试:

add_executable(overview-urdf overview-urdf.cpp)
target_include_directories(overview-urdf PUBLIC
/path/to/eigen
/path/to/pinocchio/include/
)
target_compile_definitions(overview-urdf PUBLIC
PINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR
PINOCCHIO_WITH_URDFDOM
)
target_link_libraries(overview-urdf PUBLIC
boost_system
urdfdom_model
)

关于c++ - 将用于终端编译的g++命令转换为CMakeLists.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60614400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com