日記(2022年3月20日)

Sun Mar 20 15:10:05 JST 2022 (modified: Sun Mar 20 16:52:15 JST 2022)
views: 1986, keywords: 日記, ROS, CMake

  このエントリーをはてなブックマークに追加 

 本日は細々としたタスクを片付けて、その後、自己位置推定のemclパッケージが混乱していたので整理。

catkin_makeのときに同じ名前のクラスが複数あってbuildできないとき

 emclの分離作業を進めていたら、catkin_makeが「(emclとemcl2に)同じ名前のクラスがある」と言ってエラーを吐きました。

CMake Error at emcl2/CMakeLists.txt:18 (add_library):
     add_library cannot create target "Mcl" because another target with the same
     name already exists.  The existing target is a shared library created in
     source directory "/home/ueda/catkin_ws/src/emcl".  See documentation for
     policy CMP0002 for more details.

C++のコードでnamespaceを分けておけば大丈夫かと思ってたらどうやらそれではダメらしく、次のリンクのようにCMakeLists.txtadd_librarytarget_link_librariesを変更しなければならないと分かりました。add_libraryの最初の引数の名前をユニークなものにしなければならないようです。

https://github.com/ryuichiueda/emcl2/commit/8b9919352e0951185df451d5a33be6a041c0bbdc#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20a

例えば上のリンクの例では、add_library(Mcl src/Mcl.cpp)Mcladd_library(Mcl_emcl2 src/Mcl.cpp)というように、Mcl_emcl2という固有の名前に変更しています。target_link_librariesでは、add_libraryでつけた名前で当該のライブラリ(というよりはsrc/Mcl.cppをコンパイルしたオブジェクト?)を参照します。

 さらにTwitterで、元研究室メンバーのたいりょー氏から情報いただきました。他のパッケージと切り離す設定もできるとのこと。

ただ、ライブラリ名はユニークに、というルールは悪くないと思うので、とりあえず上記の方法を選択ということで・・・。ありがとうございます。

 本まで書いてるのに、ここらへんグダグダで大変申し訳なく・・・。

シェル・ワンライナー160本ノック増刷

 ROSだけでなく、シェルについても本まで書いているのにさっぱり分からんと日々悩んでますが、第4刷が出ます!

シェルさっぱり分からんけど出るものは仕方ない。よろしくお願いいたしまーす。

縦の猫動画が人気

 48時間で2000viewsいきそうです。

こっちのほうが面白いと思うんですが・・・、かなり前からアップされているのに抜かれました。やっぱり縦長のショート動画だとよさげ・・・。

昔の猫動画を縦長に編集してアップしてみるか・・・。

その他

 今日はなぜかいろいろ仕事が進んで、マンションのある会から依頼されていたポスターを完成させて提出。なぜか明日(祝日なんですけど)を締め切りにご指定いただいた報告書も完成。明日はなにをしよう・・・。

以上です。



prev:jus共催 第58回シェル芸勉強会リンク集 next:日記(2022年3月21日)





このサイトではGoogle Analyticsやその他ソーシャルボタンのためにCookieを使用しています。もし同意いただけない場合はブラウザでクッキーを無効にして閲覧をお願いします。This site uses cookies for Google AdSense and some social buttons. If you cannot accept our use of cookies, please disable cookies on your browser.