-
Notifications
You must be signed in to change notification settings - Fork 7.5k
[opencolorio] Linker error (x64-osx) #21642
Description
Describe the bug
Any program I've tried fails to link with OpenColorIO installed through vcpkg with the x64-osx triplet.
Environment
- OS: macOS High Sierra 10.13.6
- Compiler: Apple LLVM version 10.0.0 (clang-1000.10.44.4)
To Reproduce
Steps to reproduce the behavior:
-
./vcpkg install opencolorio --triplet x64-osx -
Find a project that will link with OpenColorIO. I've written an extremely simple one below:
CMakeLists.txt
cmake_minimum_required(VERSION 3.22) project(ocio-test LANGUAGES CXX) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) find_package(OpenColorIO REQUIRED) add_executable(ociotest main.cpp ) target_link_libraries(ociotest PRIVATE OpenColorIO::OpenColorIO OpenColorIO::OpenColorIOHeaders)main.cpp
#include <OpenColorIO/OpenColorIO.h> int main() { OCIO_NAMESPACE::Config::CreateFromEnv(); return 0; } -
Try to compile with CMake and the vcpkg.cmake toolchain file.
-
Receive the following linker errors:
Log
Undefined symbols for architecture x86_64: "_XML_ErrorString", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::parse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) in libOpenColorIO.a(CDLParser.cpp.o) "_XML_GetErrorCode", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::parse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) in libOpenColorIO.a(CDLParser.cpp.o) "_XML_Parse", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::parse(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) in libOpenColorIO.a(CDLParser.cpp.o) "_XML_ParserCreate", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::Impl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(CDLParser.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::Impl(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(CDLParser.cpp.o) OpenColorIO_v2_1::CDLParser::CDLParser(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(CDLParser.cpp.o) "_XML_ParserFree", referenced from: OpenColorIO_v2_1::(anonymous namespace)::XMLParserHelper::~XMLParserHelper() in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::~Impl() in libOpenColorIO.a(CDLParser.cpp.o) "_XML_SetCharacterDataHandler", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::initializeHandlers(char const*) in libOpenColorIO.a(CDLParser.cpp.o) "_XML_SetElementHandler", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::initializeHandlers(char const*) in libOpenColorIO.a(CDLParser.cpp.o) "_XML_SetUserData", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatIridasLook.cpp.o) OpenColorIO_v2_1::CDLParser::Impl::initializeHandlers(char const*) in libOpenColorIO.a(CDLParser.cpp.o) "YAML::InvalidNode::~InvalidNode()", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwError(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwValueError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::BadSubscript::~BadSubscript()", referenced from: YAML::detail::node* YAML::detail::node_data::get<char [21]>(char const (&) [21], std::__1::shared_ptr<YAML::detail::memory_holder>) const in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::detail::node* YAML::detail::node_data::get<unsigned long>(unsigned long const&, std::__1::shared_ptr<YAML::detail::memory_holder>) const in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::BadConversion::~BadConversion()", referenced from: YAML::TypedBadConversion<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::TypedBadConversion<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::TypedBadConversion<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::TypedBadConversion<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::TypedBadConversion<bool>::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::TypedBadConversion<bool>::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::TypedBadConversion<std::__1::vector<double, std::__1::allocator<double> > >::~TypedBadConversion() in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::ostream_wrapper::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: YAML::Emitter& YAML::Emitter::WriteStreamable<double>(double) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::Emitter& YAML::Emitter::WriteStreamable<float>(float) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Load(std::__1::basic_istream<char, std::__1::char_traits<char> >&)", referenced from: OpenColorIO_v2_1::OCIOYaml::Read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::detail::memory::create_node()", referenced from: YAML::Node::EnsureNodeExists() const in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::detail::node_data::empty_scalar()", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwError(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::vector<double, std::__1::allocator<double> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::detail::node_data::mark_defined()", referenced from: YAML::detail::node::mark_defined() in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::detail::node_data::end()", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::FileRules>&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, OpenColorIO_v2_1::View&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::ColorSpace>&, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::convert<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::decode(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::convert<std::__1::vector<double, std::__1::allocator<double> > >::decode(YAML::Node const&, std::__1::vector<double, std::__1::allocator<double> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::detail::node_data::begin()", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::FileRules>&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, OpenColorIO_v2_1::View&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::ColorSpace>&, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::convert<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::decode(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::convert<std::__1::vector<double, std::__1::allocator<double> > >::decode(YAML::Node const&, std::__1::vector<double, std::__1::allocator<double> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::detail::node_data::set_null()", referenced from: YAML::Node::EnsureNodeExists() const in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::PrepareNode(YAML::EmitterNodeType::value)", referenced from: YAML::Emitter& YAML::Emitter::WriteStreamable<double>(double) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::Emitter& YAML::Emitter::WriteStreamable<float>(float) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::SetLocalValue(YAML::EMITTER_MANIP)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::saveDescription(YAML::Emitter&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::View const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::ColorSpace const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::EmitBaseTransformKeyValues(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform const> const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::EmitTransformName(YAML::Emitter&, OpenColorIO_v2_1::FormatMetadata const&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::Emitter::StartedScalar()", referenced from: YAML::Emitter& YAML::Emitter::WriteStreamable<double>(double) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::Emitter& YAML::Emitter::WriteStreamable<float>(float) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::SetFloatPrecision(unsigned long)", referenced from: OpenColorIO_v2_1::OCIOYaml::Write(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::SetDoublePrecision(unsigned long)", referenced from: OpenColorIO_v2_1::OCIOYaml::Write(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::Write(YAML::_Tag const&)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::View const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::ColorSpace const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::Write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::saveDescription(YAML::Emitter&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::View const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::ColorSpace const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::Allocation) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::EmitBaseTransformKeyValues(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform const> const&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "YAML::Emitter::Write(bool)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::ColorSpace const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform const>, unsigned int) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::Write(char)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::save(YAML::Emitter&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::Emitter()", referenced from: OpenColorIO_v2_1::OCIOYaml::Write(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::~Emitter()", referenced from: OpenColorIO_v2_1::OCIOYaml::Write(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::convert<bool>::decode(YAML::Node const&, bool&)", referenced from: YAML::as_if<bool, void>::operator()() const in libOpenColorIO.a(OCIOYaml.cpp.o) "pystring::os::path::join(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::AbsPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(PathUtils.cpp.o) OpenColorIO_v2_1::Context::resolveFileLocation(char const*, std::__1::shared_ptr<OpenColorIO_v2_1::Context>&) const in libOpenColorIO.a(Context.cpp.o) "pystring::os::path::isabs(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::AbsPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(PathUtils.cpp.o) OpenColorIO_v2_1::Context::resolveFileLocation(char const*, std::__1::shared_ptr<OpenColorIO_v2_1::Context>&) const in libOpenColorIO.a(Context.cpp.o) "pystring::os::path::split(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::GetProfileDescriptionFromICCProfile(char const*) in libOpenColorIO.a(FileFormatICC.cpp.o) "pystring::os::path::dirname(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) "pystring::os::path::basename(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatDiscreet1DL.cpp.o) "pystring::os::path::normpath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::AbsPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(PathUtils.cpp.o) OpenColorIO_v2_1::Context::resolveFileLocation(char const*, std::__1::shared_ptr<OpenColorIO_v2_1::Context>&) const in libOpenColorIO.a(Context.cpp.o) "pystring::os::path::splitext(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LoadFileUncached(OpenColorIO_v2_1::FileFormat*&, std::__1::shared_ptr<OpenColorIO_v2_1::CachedFile>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) in libOpenColorIO.a(FileTransform.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatCTF.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::LocalFileFormat::read(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) const in libOpenColorIO.a(FileFormatDiscreet1DL.cpp.o) "pystring::mul(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from: OpenColorIO_v2_1::SerializeOpVec(OpenColorIO_v2_1::OpRcPtrVec const&, int) in libOpenColorIO.a(Op.cpp.o) "pystring::strip(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::XMLParserHelper::CharacterDataHandler(void*, char const*, int) in libOpenColorIO.a(FileFormatIridasLook.cpp.o) "pystring::replace(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from: OpenColorIO_v2_1::(anonymous namespace)::LoadFileUncached(OpenColorIO_v2_1::FileFormat*&, std::__1::shared_ptr<OpenColorIO_v2_1::CachedFile>&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpenColorIO_v2_1::Interpolation) in libOpenColorIO.a(FileTransform.cpp.o) "YAML::detail::node_data::size() const", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Transform>&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::loadLogParam(YAML::Node const&, double (&) [3], std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::GetFloatPrecision() const", referenced from: YAML::Emitter& YAML::Emitter::WriteStreamable<float>(float) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::GetDoublePrecision() const", referenced from: YAML::Emitter& YAML::Emitter::WriteStreamable<double>(double) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::good() const", referenced from: YAML::Emitter& YAML::Emitter::WriteStreamable<double>(double) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::Emitter& YAML::Emitter::WriteStreamable<float>(float) in libOpenColorIO.a(OCIOYaml.cpp.o) "YAML::Emitter::c_str() const", referenced from: OpenColorIO_v2_1::OCIOYaml::Write(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, OpenColorIO_v2_1::Config const&) in libOpenColorIO.a(OCIOYaml.cpp.o) "typeinfo for YAML::InvalidNode", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwError(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwValueError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... "typeinfo for YAML::BadSubscript", referenced from: YAML::detail::node* YAML::detail::node_data::get<char [21]>(char const (&) [21], std::__1::shared_ptr<YAML::detail::memory_holder>) const in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::detail::node* YAML::detail::node_data::get<unsigned long>(unsigned long const&, std::__1::shared_ptr<YAML::detail::memory_holder>) const in libOpenColorIO.a(OCIOYaml.cpp.o) "typeinfo for YAML::BadConversion", referenced from: typeinfo for YAML::TypedBadConversion<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > in libOpenColorIO.a(OCIOYaml.cpp.o) typeinfo for YAML::TypedBadConversion<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > in libOpenColorIO.a(OCIOYaml.cpp.o) typeinfo for YAML::TypedBadConversion<bool> in libOpenColorIO.a(OCIOYaml.cpp.o) typeinfo for YAML::TypedBadConversion<std::__1::vector<double, std::__1::allocator<double> > > in libOpenColorIO.a(OCIOYaml.cpp.o) typeinfo for YAML::TypedBadConversion<double> in libOpenColorIO.a(OCIOYaml.cpp.o) typeinfo for YAML::TypedBadConversion<std::__1::vector<float, std::__1::allocator<float> > > in libOpenColorIO.a(OCIOYaml.cpp.o) typeinfo for YAML::TypedBadConversion<float> in libOpenColorIO.a(OCIOYaml.cpp.o) ... "vtable for YAML::InvalidNode", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwError(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwValueError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for YAML::BadSubscript", referenced from: YAML::BadSubscript::BadSubscript<char [21]>(YAML::Mark const&, char const (&) [21]) in libOpenColorIO.a(OCIOYaml.cpp.o) YAML::BadSubscript::BadSubscript<unsigned long>(YAML::Mark const&, unsigned long const&) in libOpenColorIO.a(OCIOYaml.cpp.o) NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for YAML::RepresentationException", referenced from: OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::shared_ptr<OpenColorIO_v2_1::Config>&, char const*) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwError(YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::CheckDuplicates(YAML::Node const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::throwValueError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, YAML::Node const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >&) in libOpenColorIO.a(OCIOYaml.cpp.o) OpenColorIO_v2_1::(anonymous namespace)::load(YAML::Node const&, bool&) in libOpenColorIO.a(OCIOYaml.cpp.o) ... NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "vtable for YAML::Exception", referenced from: YAML::Exception::Exception(YAML::Mark const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in libOpenColorIO.a(OCIOYaml.cpp.o) NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "_imath_half_to_float_table", referenced from: OpenColorIO_v2_1::Lut1DOpData::Lut3by1DArray::fill(OpenColorIO_v2_1::Lut1DOpData::HalfFlags, bool) in libOpenColorIO.a(Lut1DOpData.cpp.o) OpenColorIO_v2_1::BitDepthCast<(OpenColorIO_v2_1::BitDepth)7, (OpenColorIO_v2_1::BitDepth)1>::apply(void const*, void*, long) const in libOpenColorIO.a(CPUProcessor.cpp.o) OpenColorIO_v2_1::BitDepthCast<(OpenColorIO_v2_1::BitDepth)7, (OpenColorIO_v2_1::BitDepth)2>::apply(void const*, void*, long) const in libOpenColorIO.a(CPUProcessor.cpp.o) OpenColorIO_v2_1::BitDepthCast<(OpenColorIO_v2_1::BitDepth)7, (OpenColorIO_v2_1::BitDepth)3>::apply(void const*, void*, long) const in libOpenColorIO.a(CPUProcessor.cpp.o) OpenColorIO_v2_1::BitDepthCast<(OpenColorIO_v2_1::BitDepth)7, (OpenColorIO_v2_1::BitDepth)5>::apply(void const*, void*, long) const in libOpenColorIO.a(CPUProcessor.cpp.o) OpenColorIO_v2_1::BitDepthCast<(OpenColorIO_v2_1::BitDepth)7, (OpenColorIO_v2_1::BitDepth)7>::apply(void const*, void*, long) const in libOpenColorIO.a(CPUProcessor.cpp.o) OpenColorIO_v2_1::BitDepthCast<(OpenColorIO_v2_1::BitDepth)7, (OpenColorIO_v2_1::BitDepth)8>::apply(void const*, void*, long) const in libOpenColorIO.a(CPUProcessor.cpp.o) ... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed.
Expected behavior
A successful link, particularly for such a simple program as the example written above.
Failure logs
Linker error posted above.
Additional context
I have some awareness that this error is due to the fact that OpenColorIO's dependencies are not included in this link, namely yaml-cpp, expat, imath, and pystring. Presumably these should be included in the OpenColorIO::OpenColorIO target created by OpenColorIOConfig.cmake? It seems unreasonable for every application to know OCIO's dependencies and include each of them manually. Certainly other configuration files like the vcpkg-generated FindFFMPEG.cmake.in also automatically include any necessary dependencies, but since the OpenColorIOConfig.cmake is I believe generated by OCIO upstream, does that make this their bug? Is a vcpkg patch possible to address this quickly?