Как связать файлы заголовков с объектными файлами в CMakeLists? - PullRequest
0 голосов
/ 07 ноября 2019

Я скачал библиотеку (называемую aws-iot-sdk, и после компиляции я получил каталог с файлами *.o (объектные файлы). Теперь у меня есть заголовки и некоторые исходные файлы этой библиотеки, и я хочу использоватьих в моем проекте с CMakeLists.txt. Таким образом, у меня есть моя основная функция с именем main.cpp, и я связал ее с объектными файлами. Итак, в конце я получил это CMakeLists:

cmake_minimum_required(VERSION 2.8.3)
project(ros_bridge)

set(${PROJECT_NAME}_CATKIN_COMPONENTS
  nav_msgs
  roscpp
  sensor_msgs
  std_msgs
)

set(aws_sdk_PATH /home/pet/aws-iot-device-sdk-cpp/build/CMakeFiles/aws-iot-sdk-cpp.dir/src/)

set_source_files_properties(
  ${aws_sdk_path}
  PROPERTIES
  EXTERNAL_OBJECT true
  GENERATED true
)

add_compile_options(-std=c++14)

find_package(catkin REQUIRED COMPONENTS ${${PROJECT_NAME}_CATKIN_COMPONENTS})

catkin_package(
  INCLUDE_DIRS
    include
    include/aws_iot_sdk
    include/common
  CATKIN_DEPENDS ${${PROJECT_NAME}_CATKIN_COMPONENTS}
)


include_directories(
  include
  include/aws_iot_sdk
  ${catkin_INCLUDE_DIRS}
)

add_library(ros_client src/ros_client.cpp)
add_library(ConfigCommon include/common/ConfigCommon.cpp)
#add_library(mqtt_client src/mqtt_client.cpp)

add_executable(ros_bridge_node src/main.cpp)

target_link_libraries(ros_bridge_node ${catkin_LIBRARIES} ros_client ${aws_sdk_path})

Теперь, когда я посещаю некоторые файлы заголовков (которые я просто скопировал в файл моего проекта), я получаю некоторые ошибки. Например, <rapidjson> не найден. Это имеет смысл, поскольку связывание происходило раньше и сохранялось как объектные файлы.

Итак, мой вопрос, как я могу связать мои скопированные заголовочные файлы с его объектными файлами, используя CMakeLists.txt выше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...