ld: error: undefined symbol: mfem::DenseMatrix::DenseMatrix(int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(quat2rot(mfem::Vector const&))
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(MatrixElementPiecewiseCoefficient::Eval(mfem::DenseMatrix&, mfem::ElementTransformation&, mfem::IntegrationPoint const&))
ld: error: undefined symbol: mfem::GridFunction::GridFunction(mfem::Mesh*, std::__1::basic_istream<char, std::__1::char_traits<char> >&)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(ecg_readGF(object_st*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mfem::Mesh*, std::__1::shared_ptr<mfem::GridFunction>&))
ld: error: undefined symbol: mfem::Mesh::Mesh(char const*, int, int, bool)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(ecg_readMeshptr(object_st*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >))
ld: error: undefined symbol: mfem::Mesh::GeneratePartitioning(int, int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::ParMesh::ParMesh(int, mfem::Mesh&, int*, int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::H1_FECollection::H1_FECollection(int, int, int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::ParFiniteElementSpace::ParFiniteElementSpace(mfem::ParMesh*, mfem::FiniteElementCollection const*, int, int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::MemoryManager::host_mem_type
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced 10 more times
ld: error: undefined symbol: mfem::Array<int>::Max() const
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::MemoryManager::New_(void*, unsigned long, mfem::MemoryType, unsigned int&)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(mfem::GridFunction::GridFunction(mfem::FiniteElementSpace*))
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(MatrixElementPiecewiseCoefficient::Eval(mfem::DenseMatrix&, mfem::ElementTransformation&, mfem::IntegrationPoint const&))
>>> referenced 1 more times
ld: error: undefined symbol: mfem::MemoryManager::Delete_(void*, mfem::MemoryType, unsigned int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced 20 more times
ld: error: undefined symbol: vtable for mfem::ParGridFunction
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(mfem::ParBilinearForm::ParBilinearForm(mfem::ParFiniteElementSpace*))
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(mfem::ParGridFunction::~ParGridFunction())
>>> the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)
ld: error: undefined symbol: mfem::GridFunction::operator=(double)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::ParGridFunction::ParGridFunction(mfem::ParMesh*, mfem::GridFunction const*, int const*)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::Vector::Vector(mfem::Vector const&)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::Vector::operator+=(mfem::Vector const&)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::Vector::operator=(mfem::Vector const&)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::BilinearForm::AddDomainIntegrator(mfem::BilinearFormIntegrator*)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::ParBilinearForm::Assemble(int)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: undefined symbol: mfem::HypreParMatrix::HypreParMatrix()
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
>>> referenced by ecg.cpp
>>> ecg/CMakeFiles/ecg.dir/ecg.cpp.o:(main)
ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
It is also unclear why does it need MFEM sources instead of MFEM being installed from the package.
When
MFEM_DIRis set it breaks:It is also unclear why does it need MFEM sources instead of MFEM being installed from the package.