I recently started to use CPM.cmake
It basically a cmake file you copy/paste into your repo and invoke with one line:
CPMAddPackage(
NAME JUCE
GITHUB_REPOSITORY juce-framework/JUCE
GIT_TAG origin/develop)
It will fetch JUCE from git while configuring the project (so doesn’t require an additional git command or external tool), but unlike git submodules it can also be configured to share the same version of JUCE you have locally, while still making sure you will pull a valid version from git if you didn’t.
Here’s an example: