We're going to use the command line program ExifTool (by Phil Harvey) to extract coordinates from a gpx file and embed them in a directory of images.
Firstly, install exiftool using brew. Here's the command:
brew install exiftool
Copy the gpx files into your image directory and initiate the sync with the geotag flag:
exiftool -geotag=gpslog2014-12-10_212401.gpx ./
It is possible to also specify multiple gpx files (e.g. multiple day trip):
exiftool -geotag=gpslog2014-12-10_212401.gpx -geotag=gpslog2014-12-07_132315.gpx -geotag=gpslog2014-12-08_181318.gpx -geotag=gpslog2014-12-10_073811.gpx ./
And finally, you can include a time offset with the geosync flag. For instance, I had an 11-hour (39600 seconds) difference due to a timezone hiccup with my new camera, so we can get rid of that:
exiftool -geotag=gpslog2014-12-10_212401.gpx -geotag=gpslog2014-12-07_132315.gpx -geotag=gpslog2014-12-08_181318.gpx -geotag=gpslog2014-12-10_073811.gpx -geosync=39600 ./
It will process the images, renaming the original with an ".original" extension, and give you a report at the end:
1 directories scanned 193 image files updated 83 image files unchanged
If your camera is set to GMT, then put all the GPX files in the same directory as the photos to geocode, and do this:
TZ=GMT exiftool -geotag "*.gpx" *.jpg
For any additional manual geocoding I fallback on
If you have Lightroom, then try doing a search for a suitable ExifTool Lightroom plugin, as there seem to be a few.