Index: cmake/SearchForStuff.cmake
--- cmake/SearchForStuff.cmake.orig
+++ cmake/SearchForStuff.cmake
@@ -78,19 +78,21 @@ endif()
 
 set(CMAKE_FIND_FRAMEWORK ${FIND_FRAMEWORK_BACKUP})
 
-add_subdirectory(3rdparty/fast_float EXCLUDE_FROM_ALL)
+find_package(FastFloat REQUIRED)
+add_library(fast_float ALIAS FastFloat::fast_float)
 add_subdirectory(3rdparty/rapidyaml EXCLUDE_FROM_ALL)
 add_subdirectory(3rdparty/lzma EXCLUDE_FROM_ALL)
-add_subdirectory(3rdparty/libchdr EXCLUDE_FROM_ALL)
-disable_compiler_warnings_for_target(libchdr)
-add_subdirectory(3rdparty/soundtouch EXCLUDE_FROM_ALL)
-add_subdirectory(3rdparty/simpleini EXCLUDE_FROM_ALL)
+pkg_check_modules(chdr REQUIRED IMPORTED_TARGET GLOBAL libchdr)
+add_library(libchdr ALIAS PkgConfig::chdr)
+find_package(SoundTouch REQUIRED)
+find_package(SimpleIni REQUIRED)
+add_library(simpleini ALIAS SimpleIni::SimpleIni)
 add_subdirectory(3rdparty/imgui EXCLUDE_FROM_ALL)
 add_subdirectory(3rdparty/cpuinfo EXCLUDE_FROM_ALL)
 disable_compiler_warnings_for_target(cpuinfo)
-add_subdirectory(3rdparty/libzip EXCLUDE_FROM_ALL)
+find_package(libzip REQUIRED)
 add_subdirectory(3rdparty/rcheevos EXCLUDE_FROM_ALL)
-add_subdirectory(3rdparty/rapidjson EXCLUDE_FROM_ALL)
+find_package(RapidJSON REQUIRED)
 add_subdirectory(3rdparty/discord-rpc EXCLUDE_FROM_ALL)
 add_subdirectory(3rdparty/freesurround EXCLUDE_FROM_ALL)
 
@@ -137,7 +139,7 @@ endif()
 
 # Prevent fmt from being built with exceptions, or being thrown at call sites.
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFMT_USE_EXCEPTIONS=0 -DFMT_USE_RTTI=0")
-add_subdirectory(3rdparty/fmt EXCLUDE_FROM_ALL)
+find_package(fmt REQUIRED)
 
 # Deliberately at the end. We don't want to set the flag on third-party projects.
 if(MSVC)
