diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4287614ea90fd65846c23f4cf79f52439dceb491..7b08d68cb012f591a299c4e705fc7aae1dd26efb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,19 +2,31 @@ cmake_minimum_required(VERSION 3.5)
 
 project(geographic_msgs)
 
-#if(NOT WIN32)
-#  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wextra")
-#endif()
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+  set(CMAKE_CXX_STANDARD 14)
+endif()
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+  # we dont use add_compile_options with pedantic in message packages
+  # because the Python C extensions dont comply with it
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic")
+endif()
 
 find_package(ament_cmake REQUIRED)
-find_package(builtin_interfaces REQUIRED)
 find_package(rosidl_default_generators REQUIRED)
 find_package(geometry_msgs REQUIRED)
 
-rosidl_generate_interfaces(geographic_msgs
+set(msg_files
   "msg/GeoPose.msg"
   "msg/GeoPoint.msg"
-  DEPENDENCIES builtin_interfaces geometry_msgs
 )
 
+rosidl_generate_interfaces(${PROJECT_NAME}
+  ${msg_files}
+  DEPENDENCIES geometry_msgs
+  ADD_LINTER_TESTS
+)
+
+ament_export_dependencies(rosidl_default_runtime)
+
 ament_package()
diff --git a/package.xml b/package.xml
index 2be70b25e33796a216a4668e517e4b68750e1c5c..f0965c125f10d4692b4bcc369a8dead63aac0f1c 100644
--- a/package.xml
+++ b/package.xml
@@ -14,7 +14,8 @@
   <build_depend>std_msgs</build_depend>
 
   <exec_depend>rosidl_default_runtime</exec_depend>
-  <exec_depend>std_msgs</exec_depend>
+
+  <depend>geometry_msgs</depend>
 
   <test_depend>ament_lint_common</test_depend>