diff --git a/demo_nodes_cpp/CMakeLists.txt b/demo_nodes_cpp/CMakeLists.txt
index e4b572551..b278a2067 100644
--- a/demo_nodes_cpp/CMakeLists.txt
+++ b/demo_nodes_cpp/CMakeLists.txt
@@ -12,6 +12,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
endif()
find_package(ament_cmake REQUIRED)
+find_package(ament_nodl REQUIRED)
find_package(example_interfaces REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_components REQUIRED)
@@ -112,6 +113,7 @@ rclcpp_components_register_node(parameters_library
rclcpp_components_register_node(topics_library
PLUGIN "demo_nodes_cpp::Talker"
EXECUTABLE talker)
+nodl_export_node_description_file(talker.nodl.xml)
rclcpp_components_register_node(topics_library
PLUGIN "demo_nodes_cpp::LoanedMessageTalker"
EXECUTABLE talker_loaned_message)
@@ -121,6 +123,7 @@ rclcpp_components_register_node(topics_library
rclcpp_components_register_node(topics_library
PLUGIN "demo_nodes_cpp::Listener"
EXECUTABLE listener)
+nodl_export_node_description_file(listener.nodl.xml)
rclcpp_components_register_node(topics_library
PLUGIN "demo_nodes_cpp::SerializedMessageListener"
EXECUTABLE listener_serialized_message)
diff --git a/demo_nodes_cpp/listener.nodl.xml b/demo_nodes_cpp/listener.nodl.xml
new file mode 100644
index 000000000..afb4071d3
--- /dev/null
+++ b/demo_nodes_cpp/listener.nodl.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/demo_nodes_cpp/package.xml b/demo_nodes_cpp/package.xml
index 5c8b3eabb..4d34de046 100644
--- a/demo_nodes_cpp/package.xml
+++ b/demo_nodes_cpp/package.xml
@@ -12,6 +12,7 @@
William Woodall
ament_cmake
+ ament_nodl
example_interfaces
rclcpp
diff --git a/demo_nodes_cpp/talker.nodl.xml b/demo_nodes_cpp/talker.nodl.xml
new file mode 100644
index 000000000..2be3d54c1
--- /dev/null
+++ b/demo_nodes_cpp/talker.nodl.xml
@@ -0,0 +1,5 @@
+
+
+
+
+