I am able to compile the source code into an object file.
Undefined symbols for architecture x86_64:
"AmbientLight::AmbientLight(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
generateLights(NodePath, bool) in 3d-game-shaders-for-beginners.o
"InternalName::append(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
PointerTo InternalName::make<16>(char const (&) [16]) in 3d-game-shaders-for-beginners.o
PointerTo InternalName::make<14>(char const (&) [14]) in 3d-game-shaders-for-beginners.o
PointerTo InternalName::make<8>(char const (&) [8]) in 3d-game-shaders-for-beginners.o
PointerTo InternalName::make<6>(char const (&) [6]) in 3d-game-shaders-for-beginners.o
PointerTo InternalName::make<15>(char const (&) [15]) in 3d-game-shaders-for-beginners.o
PointerTo InternalName::make<12>(char const (&) [12]) in 3d-game-shaders-for-beginners.o
PointerTo InternalName::make<11>(char const (&) [11]) in 3d-game-shaders-for-beginners.o
...
"InternalName::InternalName(InternalName*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
InternalName::get_root() in 3d-game-shaders-for-beginners.o
"TypeRegistry::register_type(TypeHandle&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
PointerToBase::update_type(ReferenceCount*) in 3d-game-shaders-for-beginners.o
NodeReferenceCount::init_type() in 3d-game-shaders-for-beginners.o
AsyncTaskManager::init_type() in 3d-game-shaders-for-beginners.o
TypedReferenceCount::init_type() in 3d-game-shaders-for-beginners.o
WindowFramework::init_type() in 3d-game-shaders-for-beginners.o
TypedWritableReferenceCount::init_type() in 3d-game-shaders-for-beginners.o
TypedWritable::init_type() in 3d-game-shaders-for-beginners.o
...
"TypeRegistry::record_alternate_name(TypeHandle, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
TypedWritableReferenceCount::init_type() in 3d-game-shaders-for-beginners.o
TypedWritable::init_type() in 3d-game-shaders-for-beginners.o
"TypeRegistry::register_dynamic_type(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
CopyOnWriteObj1<ov_multiset<PandaNode::DownConnection, std::__1::lessPandaNode::DownConnection, pvectorPandaNode::DownConnection >, TypeHandle>::init_type() in 3d-game-shaders-for-beginners.o
CopyOnWriteObj1<ov_set<PandaNode::UpConnection, std::__1::lessPandaNode::UpConnection, pvectorPandaNode::UpConnection >, TypeHandle>::init_type() in 3d-game-shaders-for-beginners.o
"ButtonRegistry::find_button(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
isButtonDown(WindowFramework*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in 3d-game-shaders-for-beginners.o
"GraphicsEngine::make_output(GraphicsPipe*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, int, FrameBufferProperties const&, WindowProperties const&, int, GraphicsStateGuardian*, GraphicsOutput*)", referenced from:
generateHighPrecisionFramebufferTextureForScene(PointerTo, PointerTo, PointerTo, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >) in 3d-game-shaders-for-beginners.o
"GraphicsOutput::make_texture_buffer(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, int, int, Texture*, bool, FrameBufferProperties*)", referenced from:
generateFramebufferTextureForImage(PointerTo, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, LVecBase4f) in 3d-game-shaders-for-beginners.o
generateFramebufferTextureForScene(PointerTo, PointerTo, PointerTo, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, LVecBase4f) in 3d-game-shaders-for-beginners.o
"DirectionalLight::DirectionalLight(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
generateLights(NodePath, bool) in 3d-game-shaders-for-beginners.o
"GenericAsyncTask::GenericAsyncTask(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, AsyncTask::DoneStatus ()(GenericAsyncTask, void*), void*)", referenced from:
_main in 3d-game-shaders-for-beginners.o
"Fog::Fog(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
_main in 3d-game-shaders-for-beginners.o
"Camera::Camera(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, Lens*)", referenced from:
generateFramebufferTextureForImage(PointerTo, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, LVecBase4f) in 3d-game-shaders-for-beginners.o
"PandaNode::PandaNode(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
_main in 3d-game-shaders-for-beginners.o
NodePath::NodePath(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, Thread*) in 3d-game-shaders-for-beginners.o
"Spotlight::Spotlight(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&)", referenced from:
generateWindowLight(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, NodePath, LVecBase3f, bool) in 3d-game-shaders-for-beginners.o
"NodePath::find(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) const", referenced from:
_main in 3d-game-shaders-for-beginners.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)