Skip to content

Instantly share code, notes, and snippets.

@Kyungpyo-Kim
Forked from dirk-thomas/CMakeLists.txt
Created February 14, 2020 06:34
Show Gist options
  • Save Kyungpyo-Kim/f9741d666f08e3b6fbce3cf82197df3b to your computer and use it in GitHub Desktop.
Save Kyungpyo-Kim/f9741d666f08e3b6fbce3cf82197df3b to your computer and use it in GitHub Desktop.
CMakeLists.txt example with ament
cmake_minimum_required(VERSION 2.8.3)
project(foo)
if(NOT WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rosidl_default_generators REQUIRED)
find_package(rmw_connext_cpp REQUIRED)
find_package(std_interfaces REQUIRED)
# message generation
rosidl_generate_interfaces(
${PROJECT_NAME}_msg-gen
msg/MyMessage.msg
)
# setup targets
include_directories(
include
${rclcpp_INCLUDE_DIRS}
${rmw_connext_cpp_INCLUDE_DIRS}
${std_interfaces_INCLUDE_DIRS}
)
add_library(foo_lib src/lib.cpp)
target_link_libraries(foo_lib ${rclcpp_LIBRARIES} ${rmw_connext_cpp_LIBRARIES} ${std_interfaces})
add_executable(foo_bin src/bin.cpp)
add_dependencies(foo_bin foo_lib)
# export information to downstream packages
ament_export_dependencies(
rclcpp
std_interfaces
)
ament_export_include_directories(include)
ament_export_libraries(foo_lib)
# must be called *after* the targets to check exported libraries etc.
ament_package(
CONFIG_EXTRAS "foo-extras.cmake"
)
# install artifacts
install(
DIRECTORY cmake
DESTINATION share/${PROJECT_NAME}
)
install(
DIRECTORY include/
DESTINATION include
)
install(
TARGETS foo_lib foo_bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
# tests
if(AMENT_ENABLE_TESTING)
find_package(ament_cmake_gtest REQUIRED)
ament_add_gtest(foo_gtest test/my_test.cpp)
target_link_libraries(foo_gtest ${rclcpp_LIBRARIES} ${rmw_connext_cpp_LIBRARIES} ${std_interfaces})
endif()
@Kyungpyo-Kim
Copy link
Author

Good reference!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment