cppit / jucipp

A lightweight & cross-platform IDE supporting the most recent C++ standards. This project has moved to https://gitlab.com/cppit/jucipp.
https://gitlab.com/cppit/jucipp
MIT License
882 stars 98 forks source link

mac Undefined symbols for architecture x86_64 #368

Closed duoan closed 6 years ago

duoan commented 6 years ago

I met a error when I try to install jucipp on my mac desktop.

detail error stack:

[100%] Linking CXX executable juci
Undefined symbols for architecture x86_64:
  "Gio::Application::on_open(std::vector<Glib::RefPtr<Gio::File>, std::allocator<Glib::RefPtr<Gio::File> > > const&, Glib::ustring const&)", referenced from:
      construction vtable for Gio::Application-in-Application in juci.cc.o
      construction vtable for Gtk::Application-in-Application in juci.cc.o
      vtable for Application in juci.cc.o
  "Gio::content_type_guess(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char const*, unsigned long, bool&)", referenced from:
      Source::guess_language(boost::filesystem::path const&)  in libjuci_shared.a(source.cc.o)
  "Gsv::LanguageManager::get_language(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Source::guess_language(boost::filesystem::path const&)  in libjuci_shared.a(source.cc.o)
  "Gsv::LanguageManager::guess_language(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Source::guess_language(boost::filesystem::path const&)  in libjuci_shared.a(source.cc.o)
  "Gsv::StyleSchemeManager::get_scheme(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Source::View::configure()    in libjuci_shared.a(source.cc.o)
  "Gsv::StyleSchemeManager::prepend_search_path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Source::View::configure()    in libjuci_shared.a(source.cc.o)
  "Gtk::CssProvider::load_from_data(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Directories::Directories() in directories.cc.o
      Directories::Directories() in directories.cc.o
      Info::Info()  in info.cc.o
      Info::Info()  in info.cc.o
      Notebook::Notebook() in notebook.cc.o
      Notebook::Notebook() in notebook.cc.o
  "Gtk::Container::set_focus_chain(std::vector<Gtk::Widget*, std::allocator<Gtk::Widget*> > const&)", referenced from:
      EntryBox::show()     in entrybox.cc.o
      EntryBox::EntryBox() in entrybox.cc.o
      EntryBox::EntryBox() in entrybox.cc.o
      sigc::internal::slot_call0<Window::add_widgets()::{lambda()#2}, void>::call_it(sigc::internal::slot_rep*) in window.cc.o
  "Glib::set_prgname(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Application::on_command_line(Glib::RefPtr<Gio::ApplicationCommandLine> const&)      in juci.cc.o
  "Glib::Value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::set(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      void Gtk::TreeRow::set_value<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(Gtk::TreeModelColumn<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const in directories.cc.o
      SelectionDialogBase::ListViewText::append(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in selection_dialog.cc.o
      SelectionDialogBase::add_row(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in selection_dialog.cc.o
  "Glib::ustring::replace(Glib::ustring_Iterator<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, Glib::ustring_Iterator<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, char const*)", referenced from:
      Source::View::load()    in libjuci_shared.a(source.cc.o)
      std::_Function_handler<void (), Terminal::async_print(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) in libjuci_shared.a(terminal.cc.o)
      std::_Function_handler<void (char const*, unsigned long), Terminal::process(std::basic_istream<char, std::char_traits<char> >&, std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::filesystem::path const&)::{lambda(char const*, unsigned long)#1}>::_M_invoke(std::_Any_data const&, char const*&&, unsigned long&&) in libjuci_shared.a(terminal.cc.o)
      Terminal::print(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) in libjuci_shared.a(terminal.cc.o)
  "Glib::ustring::validate(Glib::ustring_Iterator<__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)", referenced from:
      Source::View::load()    in libjuci_shared.a(source.cc.o)
      std::_Function_handler<void (), Terminal::async_print(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) in libjuci_shared.a(terminal.cc.o)
      std::_Function_handler<void (char const*, unsigned long), Terminal::process(std::basic_istream<char, std::char_traits<char> >&, std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::filesystem::path const&)::{lambda(char const*, unsigned long)#1}>::_M_invoke(std::_Any_data const&, char const*&&, unsigned long&&) in libjuci_shared.a(terminal.cc.o)
      Terminal::print(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) in libjuci_shared.a(terminal.cc.o)
  "Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)", referenced from:
      Directories::colorize_path(boost::filesystem::path const&, bool)::{lambda()#1}::operator()() const::{lambda()#1}::operator()() const in directories.cc.o
      Directories::Directories()::{lambda()#8}::operator()() const in directories.cc.o
      Notebook::configure(unsigned long) in notebook.cc.o
      std::_Function_handler<void (Source::View*), Notebook::open(boost::filesystem::path const&, unsigned long)::{lambda(Source::View*)#3}>::_M_invoke(std::_Any_data const&, Source::View*&&) in notebook.cc.o
      std::_Function_handler<void (Source::View*), Notebook::open(boost::filesystem::path const&, unsigned long)::{lambda(Source::View*)#7}>::_M_invoke(std::_Any_data const&, Source::View*&&) in notebook.cc.o
      std::_Function_handler<void (Source::DiffView*), Notebook::open(boost::filesystem::path const&, unsigned long)::{lambda(Source::DiffView*)#4}>::_M_invoke(std::_Any_data const&, Source::DiffView*&&) in notebook.cc.o
      Notebook::open(boost::filesystem::path const&, unsigned long)::{lambda(Source::View*)#2}::operator()(Source::View*) const in notebook.cc.o
      ...
  "Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      Dialog::Message::Message(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in dialogs.cc.o
      Dialog::Message::Message(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in dialogs.cc.o
      Dialog::gtk_dialog(boost::filesystem::path const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Gtk::ResponseType>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Gtk::ResponseType> > > const&, Gtk::FileChooserAction) in dialogs.cc.o
      Directories::add_or_update_path(boost::filesystem::path const&, Gtk::TreeRow const&, bool) in directories.cc.o
      Directories::open(boost::filesystem::path const&)  in directories.cc.o
      EntryBox::Entry::Entry(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, unsigned int) in entrybox.cc.o
      EntryBox::Entry::Entry(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>, unsigned int) in entrybox.cc.o
      ...
  "Glib::operator<<(std::basic_ostream<char, std::char_traits<char> >&, Glib::ustring const&)", referenced from:
      Menu::build()     in libjuci_shared.a(menu.cc.o)
  "boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)", referenced from:
      boost::archive::detail::iserializer<boost::archive::text_iarchive, boost::filesystem::path>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::detail::iserializer<boost::archive::text_iarchive, Usages::Clang::Cache::Token>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::detail::iserializer<boost::archive::text_iarchive, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const in libjuci_shared.a(usages_clang.cc.o)
  "boost::archive::text_iarchive_impl<boost::archive::text_iarchive>::text_iarchive_impl(std::basic_istream<char, std::char_traits<char> >&, unsigned int)", referenced from:
      Usages::Clang::read_cache(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::path const&) in libjuci_shared.a(usages_clang.cc.o)
  "boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      boost::archive::detail::common_oarchive<boost::archive::text_oarchive>::vsave(boost::archive::class_name_type const&) in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::detail::oserializer<boost::archive::text_oarchive, boost::filesystem::path>::save_object_data(boost::archive::detail::basic_oarchive&, void const*) const in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::detail::oserializer<boost::archive::text_oarchive, std::unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::save_object_data(boost::archive::detail::basic_oarchive&, void const*) const in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::detail::oserializer<boost::archive::text_oarchive, Usages::Clang::Cache::Token>::save_object_data(boost::archive::detail::basic_oarchive&, void const*) const in libjuci_shared.a(usages_clang.cc.o)
  "boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::text_oarchive_impl(std::basic_ostream<char, std::char_traits<char> >&, unsigned int)", referenced from:
      Usages::Clang::write_cache(boost::filesystem::path const&, Usages::Clang::Cache const&) in libjuci_shared.a(usages_clang.cc.o)
  "boost::archive::basic_text_iprimitive<std::basic_istream<char, std::char_traits<char> > >::~basic_text_iprimitive()", referenced from:
      boost::archive::text_iarchive::~text_iarchive() in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::text_iarchive::~text_iarchive() in libjuci_shared.a(usages_clang.cc.o)
      Usages::Clang::read_cache(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::path const&) in libjuci_shared.a(usages_clang.cc.o)
  "boost::archive::basic_text_oprimitive<std::basic_ostream<char, std::char_traits<char> > >::~basic_text_oprimitive()", referenced from:
      boost::archive::text_oarchive::~text_oarchive() in libjuci_shared.a(usages_clang.cc.o)
      boost::archive::text_oarchive::~text_oarchive() in libjuci_shared.a(usages_clang.cc.o)
      Usages::Clang::write_cache(boost::filesystem::path const&, Usages::Clang::Cache const&) in libjuci_shared.a(usages_clang.cc.o)
  "Gsv::LanguageManager::get_search_path[abi:cxx11]() const", referenced from:
      Source::GenericView::GenericView(boost::filesystem::path const&, Glib::RefPtr<Gsv::Language>) in libjuci_shared.a(source.cc.o)
      Source::GenericView::GenericView(boost::filesystem::path const&, Glib::RefPtr<Gsv::Language>) in libjuci_shared.a(source.cc.o)
  "Gsv::StyleSchemeManager::get_search_path[abi:cxx11]() const", referenced from:
      Source::View::configure()    in libjuci_shared.a(source.cc.o)
  "Gtk::AboutDialog::set_authors(std::vector<Glib::ustring, std::allocator<Glib::ustring> > const&) const", referenced from:
      Window::Window() in window.cc.o
      Window::Window() in window.cc.o
  "Gtk::FileChooser::get_filename[abi:cxx11]() const", referenced from:
      Dialog::gtk_dialog(boost::filesystem::path const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Gtk::ResponseType>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Gtk::ResponseType> > > const&, Gtk::FileChooserAction) in dialogs.cc.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [src/juci] Error 1
make[1]: *** [src/CMakeFiles/juci.dir/all] Error 2
make: *** [all] Error 2
eidheim commented 6 years ago

Did you compile with clang++? There might be linking issues if you compiled using g++ I guess on MacOS.

Try to clean your build folder and run:

cmake -DCMAKE_CXX_COMPILER=clang++ ..
duoan commented 6 years ago

Great, thanks @eidheim, your solution is OK.