diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc83c57d6b51db9789afabb25f755820dcaac9d4..39a54f7726f73d811c9943c759173f2b0499d23e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,8 +21,11 @@ find_package( Threads REQUIRED )
 find_package( URIParser REQUIRED )
 find_package( MsgPack REQUIRED )
 find_package( LibSGM )
+find_package( PCL )
 #find_package( ZLIB REQUIRED )
 
+set(CMAKE_CXX_STANDARD 17) # For PCL/VTK https://github.com/PointCloudLibrary/pcl/issues/2686
+
 # Readline library is not required on Windows
 # May also entirely remove dependence on this... it should be optional at least.
 if (NOT WIN32)
diff --git a/vision/CMakeLists.txt b/vision/CMakeLists.txt
index 5320fd283d02d6468da3fb2d2192b9819b52a8e6..3515efaa3fae01732494a67d640da018dc304c27 100644
--- a/vision/CMakeLists.txt
+++ b/vision/CMakeLists.txt
@@ -46,7 +46,11 @@ if (CUDA_FOUND)
 set_property(TARGET ftl-vision PROPERTY CUDA_SEPARABLE_COMPILATION ON)
 endif()
 
+# TODO: move PCL stuff elsewhere
+target_include_directories(ftl-vision PUBLIC ${PCL_INCLUDE_DIRS})
+target_compile_definitions(ftl-vision PUBLIC ${PCL_DEFINITIONS})
+
 #target_include_directories(cv-node PUBLIC ${PROJECT_SOURCE_DIR}/include)
-target_link_libraries(ftl-vision ftlcommon ftlrender Threads::Threads libelas ${OpenCV_LIBS} ${LIBSGM_LIBRARIES} ${CUDA_LIBRARIES} glog::glog ftlnet)
+target_link_libraries(ftl-vision ftlcommon ftlrender Threads::Threads libelas ${OpenCV_LIBS} ${LIBSGM_LIBRARIES} ${CUDA_LIBRARIES} glog::glog ftlnet ${PCL_LIBRARIES})