Yikes, that's quite a stupid mistake to make, thank you.
Unfortunately after a successfull built_ext now the install part errors out:
python3.5 setup.py install --user
running install
running bdist_egg
running egg_info
writing top-level names to lib/Cartopy.egg-info/top_level.txt
writing requirements to lib/Cartopy.egg-info/requires.txt
writing dependency_links to lib/Cartopy.egg-info/dependency_links.txt
writing lib/Cartopy.egg-info/PKG-INFO
reading manifest file 'lib/Cartopy.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'lib/cartopy/data/*'
writing manifest file 'lib/Cartopy.egg-info/SOURCES.txt'
installing library code to build/bdist.freebsd-10.3-RELEASE-p4-amd64/egg
running install_lib
running build_py
running build_ext
skipping 'lib/cartopy/trace.cpp' Cython extension (up-to-date)
building 'cartopy.trace' extension
cc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -fPIC -I/usr/local/include -I./lib/cartopy -I/usr/local/include -I/usr/local/include/python3.5m -c lib/cartopy/trace.cpp -o build/temp.freebsd-10.3-RELEASE-p4-amd64-3.5/lib/cartopy/trace.o
lib/cartopy/trace.cpp:282:10: fatal error: 'proj_api.h' file not found
#include "proj_api.h"
^
1 error generated.
error: command 'cc' failed with exit status 1
It seems the built_ext command doesn't inform the install command about the extra locations to include headers from. While I can manually run the compile with the added -I, a " setup.py install" afterwards again runs the compile, failing once more.