Getting error : CMake can not determine linker language for target, even with set_target_properties in CmakeLists

asked 2023-02-28 05:24:30 -0500

madangt gravatar image

updated 2023-03-06 04:04:56 -0500

Hi I am facing an error : image description

My cmakelists.txt file is as follows -

cmake_minimum_required(VERSION 3.0.2)
project(ros0xrobot CXX)

find_package(catkin REQUIRED COMPONENTS
  geometry_msgs
  roscpp
  rospy
  std_msgs
  tf2
)



###################################
## catkin specific configuration ##
###################################

catkin_package(
  INCLUDE_DIRS include
  LIBRARIES ros0xrobot
  CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs tf2
  #DEPENDS system_lib
)



add_library(${PROJECT_NAME} /home/ril/catkin_ws/src/ros0xrobot/src/rosRobotcpplib.h
                             # /home/ril/catkin_ws/src/ros0xrobot/src/rosRobotNode.cpp
)

add_executable(${PROJECT_NAME}_node /home/ril/catkin_ws/src/ros0xrobot/src/rosRobotNode.cpp)
target_compile_options( ${PROJECT_NAME}_node PUBLIC -std=c++11 -fpermissive -w -Wall )
target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES})

set_target_properties(${PROJECT_NAME}_node PROPERTIES LINKER_LANGUAGE CXX)

Please give some pointers. I have added the line below as per many sources, but still doesnt work.

  set_target_properties(${PROJECT_NAME}_node PROPERTIES LINKER_LANGUAGE CXX)

thanks. System - Ubuntu Ros - Noetic Using Catkin build

UPDATE: 1. We tried having both .h and .cpp file in add_library, which didn't work. It gave the same error.

edit retag flag offensive close merge delete

Comments

It's probably caused by:

add_library(${PROJECT_NAME} /home/ril/catkin_ws/src/ros0xrobot/src/rosRobotcpplib.h
                             # /home/ril/catkin_ws/src/ros0xrobot/src/rosRobotNode.cpp
)

C++ libraries cannot have only header files (.h) as their "sources".

Also: for future questions: please remove all the comments from the CMakeLists.txt you post. It makes your post unnecessarily long and more difficult to read.

I would also suggest to not use absolute paths to .cpp and/or .h files like you do here.

gvdhoorn gravatar image gvdhoorn  ( 2023-03-06 02:32:25 -0500 )edit

I tried having both .h and .cpp in add_library, but we get the same error that we listed. Also, I had relative paths earlier and the error showed that it was not able to track the package. So, I gave the absolute path. *: For sure, we did not want to keep the entire CMake in the problem, but we doubted if we missed some function or a line somewhere which remained commented.

madangt gravatar image madangt  ( 2023-03-06 03:07:43 -0500 )edit

To make it easier for others to help you, I'd advise you to update your original question text with the exact contents of the CMakeLists.txt which results in the problem you describe. Don't show "one of the versions which also doesn't work", and describe clearly what you've already tried (such as what you write in your comment).

Do remove all of the commented lines.

Otherwise people here can only guess, and will likely suggest things you've already tried. That would just waste your time, and ours.

gvdhoorn gravatar image gvdhoorn  ( 2023-03-06 03:52:32 -0500 )edit

Took note of your advice, the question has been updated.

madangt gravatar image madangt  ( 2023-03-06 04:05:26 -0500 )edit