inside the src folder the package action_client_pkg I created two cpp files namely wait_for_result_test.cpp
and no_wait_for_result_test.cpp
.
In Next step I added the code from tutorial and modified the CMakeLists.txt file as following:
I complied the package and encountered the following error:
I checked inside the src/action_client_pkg, which shows all the files.
I doubt either I am modifying my CMakeLists.txt wrongly? or I am doing mistake somewhere else?
Thank you for your suggestions in advance!!
Hi @bayodesegun!!
Sorry to tag you for this question directly.
Could you please suggest the correct way to compile this package?
Thank you very much for your help.
Hi @shaktigehlaut,
I was coming to your question - you just beat me to it! Please feel free to tag me directly any time - you are welcome!
Now, there is definitely some problem with CMakeLists.txt
as indicated by the error messages. I can see one here:
- in the
add_dependencies
directive, you should use the name of the package (NOT the C++ program) in the ...EXPORTED_TARGETS
part. So for both executables, it should be action_client_pkg_EXPORTED_TARGETS
.
The definition of that directive is (as you will find before modifying it):
add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
Better not to modify the ...EXPORTED_TARGETS
part, as the project name will be automatically “calculated” if you don’t touch it.
Please make this correction and let us know how it goes.
Hi @bayodesegun !!
Thanks for your suggestions.
in CMakeLists.txt as per directive
add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
Should I use
add_executable(wait_for_result_test src/ wait_for_result_test.cpp) add_dependencies(action_client_pkg_node ${action_client_pkg_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) target_link_libraries(wait_for_result_test ${catkin_LIBRARIES} )
OR
add_executable(wait_for_result_test src/ wait_for_result_test.cpp) add_dependencies(action_client_pkg_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) target_link_libraries(wait_for_result_test ${catkin_LIBRARIES} )
Hi @shaktigehlaut,
Any of the two will work! Please ensure you don’t have any unnecessary space as in src/ wait_for_result_test.cpp
. Should be src/wait_for_result_test.cpp
(no space after the /
).
Hi @bayodesegun!!
Sorry for bothering you again.
I used the following CMakeLists.txt
But I am encountering error stating the non-existent target “action_client_pkg_node”
Hi @shaktigehlaut,
I think I confused you more, sorry . Let me clarify:
- Let’s leave the 2nd argument of
add_dependencies
intact. So, please just put ${${PROJECT_NAME}_EXPORTED_TARGETS}
everywhere you have the directive. I think that’s easier.
- For all of them, you still need to modify the first argument, which is the name of your executable. So you need to change
action_client_pkg_node
to the exact name specified in the preceding add_executable
directive, which should be wait_for_result_test
and no_wait_for_result_test
respectively.
@bayodesegun Thank you!!
It perfectly compiled the project.
1 Like