diff --git a/cmake/set_control_system_adapter.cmake b/cmake/set_control_system_adapter.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..77fbd716bee3cadad76f4484a05b05433ac80f57
--- /dev/null
+++ b/cmake/set_control_system_adapter.cmake
@@ -0,0 +1,49 @@
+#######################################################################################################################
+# set_control_system_adapter.cmake
+#
+# Set the ControlSystemAdapter for a ApplicationCore server
+#
+# Expects the following input variable:
+#   ADAPTER - String specifiing the adapter, either DOOCS, OPCUA or EPICSIOC
+#
+# This macro will add the selected adapter as a dependency and set the following variables:
+#
+#   Adapter_LINK_FLAGS - Link flags provided by the adapter library
+#   Adapter_LIBRARIES  - Libraries that are dependencies of the adapter
+#
+#######################################################################################################################
+
+#######################################################################################################################
+#
+# IMPORTANT NOTE:
+#
+# DO NOT MODIFY THIS FILE inside a project. Instead update the project-template repository and pull the change from
+# there. Make sure to keep the file generic, since it will be used by other projects, too.
+#
+# If you have modified this file inside a project despite this warning, make sure to cherry-pick all your changes
+# into the project-template repository immediately.
+#
+#######################################################################################################################
+
+# Select control system adapter
+IF(ADAPTER STREQUAL "OPCUA")
+  message("Building against the OPC UA ControlSystemAdater")
+  add_dependency(ChimeraTK-ControlSystemAdapter-OPCUAAdapter REQUIRED)
+  set(Adapter_LINK_FLAGS ${ChimeraTK-ControlSystemAdapter-OPCUAAdapter_LINK_FLAGS})
+  set(Adapter_LIBRARIES ${ChimeraTK-ControlSystemAdapter-OPCUAAdapter_LIBRARIES})
+ELSEIF(ADAPTER STREQUAL "DOOCS")
+  message("Building against the DOOCS ControlSystemAdater")
+  add_dependency(ChimeraTK-ControlSystemAdapter-DoocsAdapter REQUIRED)
+  set(Adapter_LINK_FLAGS ${ChimeraTK-ControlSystemAdapter-DoocsAdapter_LINK_FLAGS})
+  set(Adapter_LIBRARIES ${ChimeraTK-ControlSystemAdapter-DoocsAdapter_LIBRARIES})
+ELSEIF(ADAPTER STREQUAL "EPICSIOC")
+  message("Building against the EPICS IOC ControlSystemAdater")
+  add_dependency(ChimeraTK-ControlSystemAdapter-EPICS-IOC-Adapter REQUIRED)
+  set(Adapter_LINK_FLAGS ${ChimeraTK-ControlSystemAdapter-EPICS-IOC-Adapter_LINK_FLAGS})
+  set(Adapter_LIBRARIES ${ChimeraTK-ControlSystemAdapter-EPICS-IOC-Adapter_LIBRARIES})
+ELSE()
+  message(FATAL_ERROR "Please select your ControlSystemAdapter to use by passing to the cmake command line:\n"
+                      "   -DADAPTER=DOOCS to build a DOOCS server\n"
+                      "   -DADAPTER=OPCUA to build an OPC UA server\n"
+                      "   -DADAPTER=EPICSIOC to build an EPICS IOC")
+ENDIF()