diff --git a/franka_control/CMakeLists.txt b/franka_control/CMakeLists.txt
index 1619f28e5f71b03b1b1c4c9d867f59d492363a89..7b47fdde3a4366437d5a71d2eabe91666fcef1c4 100644
--- a/franka_control/CMakeLists.txt
+++ b/franka_control/CMakeLists.txt
@@ -1,8 +1,6 @@
 cmake_minimum_required(VERSION 2.8.3)
 project(franka_control)
 
-list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
-
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
@@ -142,14 +140,18 @@ install(FILES franka_controller_plugins.xml
 )
 
 ## Tools
-file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
-file(GLOB_RECURSE HEADERS
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
-)
-include(ClangTools)
-add_format_target(franka_control FILES ${SOURCES} ${HEADERS})
-add_tidy_target(franka_control
-  FILES ${SOURCES}
-  DEPENDS franka_control_node franka_state_controller
-)
+include(${CMAKE_CURRENT_LIST_DIR}/../cmake/ClangTools.cmake OPTIONAL
+  RESULT_VARIABLE CLANG_TOOLS
+)
+if(CLANG_TOOLS)
+  file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
+  file(GLOB_RECURSE HEADERS
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
+  )
+  add_format_target(franka_control FILES ${SOURCES} ${HEADERS})
+  add_tidy_target(franka_control
+    FILES ${SOURCES}
+    DEPENDS franka_control_node franka_state_controller
+  )
+endif()
diff --git a/franka_example_controllers/CMakeLists.txt b/franka_example_controllers/CMakeLists.txt
index 31f665a58f0445503580bc3ae867e571b1446e82..ce69de01d1372f3239e354d98b84cf1fe66dd7ac 100644
--- a/franka_example_controllers/CMakeLists.txt
+++ b/franka_example_controllers/CMakeLists.txt
@@ -65,16 +65,18 @@ install(FILES franka_example_controllers_plugin.xml
 )
 
 ## Tools
-file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
-file(GLOB_RECURSE HEADERS
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
-)
-
-list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
-include(ClangTools)
-add_format_target(franka_example_controllers FILES ${SOURCES} ${HEADERS})
-add_tidy_target(franka_example_controllers
-  FILES ${SOURCES}
-  DEPENDS franka_example_controllers
+include(${CMAKE_CURRENT_LIST_DIR}/../cmake/ClangTools.cmake OPTIONAL
+  RESULT_VARIABLE CLANG_TOOLS
 )
+if(CLANG_TOOLS)
+  file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
+  file(GLOB_RECURSE HEADERS
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
+  )
+  add_format_target(franka_example_controllers FILES ${SOURCES} ${HEADERS})
+  add_tidy_target(franka_example_controllers
+    FILES ${SOURCES}
+    DEPENDS franka_example_controllers
+  )
+endif()
diff --git a/franka_gripper/CMakeLists.txt b/franka_gripper/CMakeLists.txt
index 58e3677544bf4f1a4d244150219a594f92aeb9d1..c93a498e04426d7966ba8c03fbfc651b3966de63 100644
--- a/franka_gripper/CMakeLists.txt
+++ b/franka_gripper/CMakeLists.txt
@@ -1,8 +1,6 @@
 cmake_minimum_required(VERSION 2.8.3)
 project(franka_gripper)
 
-list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
-
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
@@ -99,14 +97,18 @@ install(DIRECTORY config
 )
 
 ## Tools
-file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
-file(GLOB_RECURSE HEADERS
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
-)
-include(ClangTools)
-add_format_target(franka_gripper FILES ${SOURCES} ${HEADERS})
-add_tidy_target(franka_gripper
-  FILES ${SOURCES}
-  DEPENDS franka_gripper franka_gripper_node
-)
+include(${CMAKE_CURRENT_LIST_DIR}/../cmake/ClangTools.cmake OPTIONAL
+  RESULT_VARIABLE CLANG_TOOLS
+)
+if(CLANG_TOOLS)
+  file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
+  file(GLOB_RECURSE HEADERS
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
+  )
+  add_format_target(franka_gripper FILES ${SOURCES} ${HEADERS})
+  add_tidy_target(franka_gripper
+    FILES ${SOURCES}
+    DEPENDS franka_gripper franka_gripper_node
+  )
+endif()
diff --git a/franka_hw/CMakeLists.txt b/franka_hw/CMakeLists.txt
index 3d5c68a96f50da18f9f23626549e937292b1c8ed..cefe07ca06b343491f229805de7aa55445f37cfb 100644
--- a/franka_hw/CMakeLists.txt
+++ b/franka_hw/CMakeLists.txt
@@ -1,8 +1,6 @@
 cmake_minimum_required(VERSION 2.8.3)
 project(franka_hw)
 
-list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
-
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
@@ -60,14 +58,18 @@ if(CATKIN_ENABLE_TESTING)
 endif()
 
 ## Tools
-file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
-file(GLOB_RECURSE HEADERS
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
-)
-include(ClangTools)
-add_format_target(franka_hw FILES ${SOURCES} ${HEADERS})
-add_tidy_target(franka_hw
-  FILES ${SOURCES}
-  DEPENDS franka_hw
+include(${CMAKE_CURRENT_LIST_DIR}/../cmake/ClangTools.cmake OPTIONAL
+  RESULT_VARIABLE CLANG_TOOLS
 )
+if(CLANG_TOOLS)
+  file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
+  file(GLOB_RECURSE HEADERS
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
+  )
+  add_format_target(franka_hw FILES ${SOURCES} ${HEADERS})
+  add_tidy_target(franka_hw
+    FILES ${SOURCES}
+    DEPENDS franka_hw
+  )
+endif()
diff --git a/franka_visualization/CMakeLists.txt b/franka_visualization/CMakeLists.txt
index 5188fc6f1acba9db30bcefde78bb30e181d5d2d0..e5ffe18fb13347b25d9b40def072cfe7e5cd2389 100644
--- a/franka_visualization/CMakeLists.txt
+++ b/franka_visualization/CMakeLists.txt
@@ -1,8 +1,6 @@
 cmake_minimum_required(VERSION 2.8.3)
 project(franka_visualization)
 
-list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
-
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
@@ -44,14 +42,18 @@ install(DIRECTORY config
 )
 
 ## Tools
-file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
-file(GLOB_RECURSE HEADERS
-  ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
-  ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
-)
-include(ClangTools)
-add_format_target(franka_visualization FILES ${SOURCES} ${HEADERS})
-add_tidy_target(franka_visualization
-  FILES ${SOURCES}
-  DEPENDS franka_joint_state_publisher
-)
+include(${CMAKE_CURRENT_LIST_DIR}/../cmake/ClangTools.cmake OPTIONAL
+  RESULT_VARIABLE CLANG_TOOLS
+)
+if(CLANG_TOOLS)
+  file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
+  file(GLOB_RECURSE HEADERS
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h
+  )
+  add_format_target(franka_visualization FILES ${SOURCES} ${HEADERS})
+  add_tidy_target(franka_visualization
+    FILES ${SOURCES}
+    DEPENDS franka_joint_state_publisher
+  )
+endif()