<div dir="ltr"><div class="gmail_quote"><div> </div></div><div>On Wed, Jan 30, 2013 at 6:31 PM, William Woodall <span dir="ltr"><<a href="mailto:wwoodall@willowgarage.com" target="_blank">wwoodall@willowgarage.com</a>></span> wrote:<br>


</div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>


On Wed, Jan 30, 2013 at 2:13 PM, Jonathan Bohren <span dir="ltr"><<a href="mailto:jonathan.bohren@gmail.com" target="_blank">jonathan.bohren@gmail.com</a>></span> wrote:<br></div><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div dir="ltr"><div>On Wed, Jan 30, 2013 at 3:47 PM, Dirk Thomas <span dir="ltr"><<a href="mailto:dthomas@willowgarage.com" target="_blank">dthomas@willowgarage.com</a>></span> wrote:</div><div class="gmail_extra">


<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Anyway we are looking for ways to make catkin_make have a bit more sugar to make that tool easier and more convenient to use.</blockquote><div><br></div></div><div>Then what if we support the following new but thin, tools for people who want to use catkin_make instead of full-on-catkin but don't like having to jump around their filesystem in the standard CMake workflow.</div>




</div></div></div></blockquote><div><br></div></div><div>The only improvement this proposal has is that it can be done from the source space. </div></div></blockquote><div><br></div><div><br></div><div><div>Then that would be a great feature to have! I think being able to call cmake and/or make from anywhere in a given catkin workspace would make the system a lot friendlier.</div>


</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_quote">


<div>I agree with Dirk that hiding files in a .catkin folder is not desirable, visibility is important, especially for people who are unfamiliar with this development model.</div></div></blockquote><div><br></div><div>
I think having the above feature would make my desire to hide the directories to keep things uncluttered for novice users moot.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div class="gmail_quote"><div>As for the source space folder, aka `workspace/src`, my opinion is that it is an improvement on having all of the packages in the root of the workspace. The reason I say that is that having the source code not be direct peers of the build, devel, and install spaces makes searching it with simple tools easier.  For example:</div>




<div><br></div><div># I can search just the pristine source space</div><div>$ cd ~/workspace/src</div><div><div>$ grep -r "#ifndef ROSCPP_ROS_H" .</div><div>./roscpp/include/ros/ros.h:#ifndef ROSCPP_ROS_H</div>


</div></div></blockquote><div><br></div><div>Yeah, I agree that this use case would require additional user effort to remain clean if the source files were peers with the build files.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">


<div class="gmail_quote"><div>`catkin init`:<br></div><div>    mkdir -p .catkin/build .catkin/install .catkin/devel</div></div></div></div></blockquote><div> </div></div><div>This line would not be needed.</div></div></blockquote>


<div><br></div><div>We can't have a script automatically create the default workspace structure?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div class="gmail_quote"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>    catkin_make  --build .catkin/build --src . --devel .catkin/build</div></div></div></div></blockquote><div> </div></div><div>This would be: `catkin_make --build .catkin/build --src . -DCATKIN_DEVEL_PREFIX=.catkin/devel`</div>


</div></blockquote><div><br></div><div>Cool, thanks for pointing that out.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div class="gmail_quote"><div>The devel prefix is defined purely in cmake and we intended it that way. Also, just as a note, you don't want to point your devel and build space to the same folder, this would be like installing your normal cmake project to your cmake build folder.</div>


</div></blockquote><div><br></div><div>Yeah, that was just a copy-paste typo.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div class="gmail_quote"><div>Also, `catkin_make` would have run cmake and make already so the follow commands are not necessary unless you want to run them explicitly.</div><div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">




<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>`catkin cmake [cmake_args]`:</div>

<div>    cd /path/to/ws/.catkin/build && cmake /path/to/ws $cmake_args</div><div>`catkin make [make_args]`:</div><div>    cd /path/to/ws/.catkin/build && make $make_args</div><div>
<div>
`catkin ninja [ninja_args]`:</div><div>    cd /path/to/ws/.catkin/build && ninja $ninja_args</div></div></div></div></div></blockquote><div> </div></div><div>I wouldn't think we would support ninja since cmake doesn't come with a native generator for it. Even then we don't support the other generators that cmake provides.</div>


</div></blockquote><div><br></div><div>I was just putting that there to emphasize that you could do this without limiting accessibility to any of CMake's capabilities. That being said, what limitation is preventing the use of ninja to build something with catkin if your install of CMake supports it?</div>


<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div><div class="gmail_quote"></div>

</div></div><div><div class="gmail_quote"><div>`catkin source`:<br></div>

</div></div></div><div>    source /path/to/ws/.catkin/devel/setup.sh</div></div></div></blockquote><div><br></div><div>How should it know which space to source?  If I just ran `catkin_make --install` on a clean workspace I now have a valid devel and install space of which I could source either.  Would this information be stored in the marker file or ...?</div>


</div></blockquote><div><br></div><div>It could take the workspace path as an argument, or a default value could be stored in a file in your home directory. I use a similar alias for use with rosws/wstool. In my bashrc I have the following:</div>


<div><br></div><div><div>alias savews='echo -e "$(pwd)" > ~/.curws'</div><div>alias loadws='source $(cat ~/.curws)/setup.bash'</div><div><br></div><div>Then you can easily store your "deafault" workspace for a session as you open up new shells.</div>


</div><div><br></div><div>On Wed, Jan 30, 2013 at 6:35 PM, William Woodall <span dir="ltr"><<a href="mailto:wwoodall@willowgarage.com" target="_blank">wwoodall@willowgarage.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


I see where you are coming from on these suggestions, and I agree we need to work on making the tools easier to use, but I think being able to run `catkin_make` from any sub folder of the workspace (after running it there the first time) combined with a good "clean" and "dist clean" option will make the tool much more usable.</blockquote>


</div><div><br></div><div>Yeah, I think those sort of features would be great!</div><div><br></div><div>Thanks for the feedback!</div></div><div>-j</div><div><br></div>-- <br><div style="font-family:arial,sans-serif;font-size:13px">


<span style>Jonathan Bohren</span></div><div style="font-family:arial,sans-serif;font-size:13px"><span style>PhD Student</span></div><div style="font-family:arial,sans-serif;font-size:13px">
<span style>Dynamical Systems and Control Laboratory</span></div><div style="font-family:arial,sans-serif;font-size:13px"><span style>Laboratory for Computational Sensing and Robotics</span></div>
<div style="font-family:arial,sans-serif;font-size:13px"><span style>The Johns Hopkins University</span></div><div style="font-family:arial,sans-serif;font-size:13px"><span style><br>
</span></div><div style="font-family:arial,sans-serif;font-size:13px"><font style color="#000000"><span title="Call with Google Voice"><span title="Call with Google Voice"><a href="tel:%28707%29%20520-4736" value="+17075204736" target="_blank">(707) 520-4736</a></span></span></font></div>


<div style="font-family:arial,sans-serif;font-size:13px"><font style color="#000000"><a href="mailto:jbo@jhu.edu" target="_blank">jbo@jhu.edu</a></font></div>
</div></div>