0

I have a new g++ Codelite project - on Macosx.

I am using json_to_cpp and want to compile and run a simple demo. I keep getting the following output:

    /usr/bin/make -j16 -e -f  Makefile
----------Building project:[ JSON_to_C++ - Debug ]----------
/usr/bin/g++  -c  "/Users/auser/Documents/Development/C-Simple-Projects/C-Simple-Projects/JSON_to_C++/main.cpp" -g -O0 -Wall -std=c++17  -o Debug/main.cpp.o -I. -I. -Iinclude
/usr/bin/g++ -o Debug/JSON_to_C++ @"JSON_to_C++.txt" -L. -Linclude
Undefined symbols for architecture x86_64:
  "daw::json_to_cpp::generate_cpp(daw::basic_string_view<char, daw::StringViewBoundsPointer, -1l>, daw::json_to_cpp::config_t&)", referenced from:
      _main in main.cpp.o
  "daw::curl::is_url(daw::basic_string_view<char, daw::StringViewBoundsPointer, -1l>)", referenced from:
      main::$_0::operator()() const in main.cpp.o
  "daw::curl::download(daw::basic_string_view<char, daw::StringViewBoundsPointer, -1l>, daw::basic_string_view<char, daw::StringViewBoundsPointer, -1l>)", referenced from:
      main::$_0::operator()() const in main.cpp.o
  "boost::program_options::validators::check_first_occurrence(boost::any const&)", referenced from:
      void boost::program_options::validate<std::__1::__fs::filesystem::path, char>(boost::any&, 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> > > > const&, std::__1::__fs::filesystem::path*, long) in main.cpp.o
  "boost::program_options::to_internal(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      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> > > > boost::program_options::to_internal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(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> > > > const&) in main.cpp.o
  "boost::program_options::variables_map::variables_map()", referenced from:
      _main in main.cpp.o
  "boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)", referenced from:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, 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) in main.cpp.o
  "boost::program_options::options_description::add_options()", referenced from:
      _main in main.cpp.o
  "boost::program_options::options_description::m_default_line_length", referenced from:
      _main in main.cpp.o
  "boost::program_options::options_description::options_description(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned int)", referenced from:
      _main in main.cpp.o
  "boost::program_options::invalid_option_value::invalid_option_value(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      void boost::program_options::validate<std::__1::__fs::filesystem::path, char>(boost::any&, 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> > > > const&, std::__1::__fs::filesystem::path*, long) in main.cpp.o
      void boost::program_options::validate<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char>(boost::any&, 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> > > > 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> > > >*, int) in main.cpp.o
  "boost::program_options::error_with_option_name::error_with_option_name(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:
      boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, 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) in main.cpp.o
  "boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)", referenced from:
      _main in main.cpp.o
  "boost::program_options::options_description_easy_init::operator()(char const*, char const*)", referenced from:
      _main in main.cpp.o
  "boost::program_options::arg", referenced from:
      boost::program_options::typed_value<std::__1::__fs::filesystem::path, char>::name() const in main.cpp.o
      boost::program_options::typed_value<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> > > >, char>::name() const in main.cpp.o
      boost::program_options::typed_value<bool, char>::name() const in main.cpp.o
      boost::program_options::typed_value<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char>::name() const in main.cpp.o
  "boost::program_options::store(boost::program_options::basic_parsed_options<char> const&, boost::program_options::variables_map&, bool)", referenced from:
      _main in main.cpp.o
  "boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::__1::pair<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:
      boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::__1::pair<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&>) in main.cpp.o
  "boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)", referenced from:
      boost::program_options::basic_command_line_parser<char>::options(boost::program_options::options_description const&) in main.cpp.o
  "boost::program_options::detail::cmdline::get_canonical_option_prefix()", referenced from:
      boost::program_options::basic_command_line_parser<char>::run() in main.cpp.o
  "boost::program_options::detail::cmdline::run()", referenced from:
      boost::program_options::basic_command_line_parser<char>::run() in main.cpp.o
  "boost::program_options::detail::cmdline::style(int)", referenced from:
      boost::program_options::basic_command_line_parser<char>::style(int) in main.cpp.o
  "boost::program_options::detail::cmdline::cmdline(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> > > > const&)", referenced from:
      boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*) in main.cpp.o
  "boost::program_options::notify(boost::program_options::variables_map&)", referenced from:
      _main in main.cpp.o
  "boost::program_options::validate(boost::any&, 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> > > > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, int)", referenced from:
      void boost::program_options::validate<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char>(boost::any&, 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> > > > 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> > > >*, int) in main.cpp.o
      boost::program_options::typed_value<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char>::xparse(boost::any&, 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> > > > const&) const in main.cpp.o
  "boost::program_options::validate(boost::any&, 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> > > > const&, bool*, int)", referenced from:
      boost::program_options::typed_value<bool, char>::xparse(boost::any&, 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> > > > const&) const in main.cpp.o
  "boost::program_options::operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, boost::program_options::options_description const&)", referenced from:
      _main in main.cpp.o
      main::$_0::operator()() const in main.cpp.o
  "boost::program_options::abstract_variables_map::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const", referenced from:
      boost::program_options::variables_map::operator[](std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const in main.cpp.o
  "boost::program_options::error_with_option_name::substitute_placeholders(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const", referenced from:
      vtable for boost::wrapexcept<boost::program_options::validation_error> in main.cpp.o
      vtable for boost::program_options::validation_error in main.cpp.o
      vtable for boost::wrapexcept<boost::program_options::invalid_option_value> in main.cpp.o
      vtable for boost::program_options::invalid_option_value in main.cpp.o
  "boost::program_options::error_with_option_name::what() const", referenced from:
      vtable for boost::wrapexcept<boost::program_options::validation_error> in main.cpp.o
      vtable for boost::program_options::validation_error in main.cpp.o
      vtable for boost::wrapexcept<boost::program_options::invalid_option_value> in main.cpp.o
      vtable for boost::program_options::invalid_option_value in main.cpp.o
  "boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, 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> > > > const&, bool) const", referenced from:
      vtable for boost::program_options::typed_value<std::__1::__fs::filesystem::path, char> in main.cpp.o
      vtable for boost::program_options::typed_value<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> > > >, char> in main.cpp.o
      vtable for boost::program_options::typed_value<bool, char> in main.cpp.o
      vtable for boost::program_options::typed_value<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char> in main.cpp.o
  "typeinfo for boost::program_options::error_with_option_name", referenced from:
      typeinfo for boost::program_options::validation_error in main.cpp.o
  "typeinfo for boost::program_options::value_semantic_codecvt_helper<char>", referenced from:
      typeinfo for boost::program_options::typed_value<std::__1::__fs::filesystem::path, char> in main.cpp.o
      typeinfo for boost::program_options::typed_value<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> > > >, char> in main.cpp.o
      typeinfo for boost::program_options::typed_value<bool, char> in main.cpp.o
      typeinfo for boost::program_options::typed_value<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char> in main.cpp.o
  "vtable for boost::program_options::variables_map", referenced from:
      boost::program_options::variables_map::~variables_map() in main.cpp.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for boost::program_options::error_with_option_name", referenced from:
      boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&) in main.cpp.o
      boost::program_options::error_with_option_name::~error_with_option_name() in main.cpp.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for boost::program_options::value_semantic_codecvt_helper<char>", referenced from:
      boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper() in main.cpp.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Debug/JSON_to_C++] Error 1
make: *** [All] Error 2
==== build ended with errors (1 errors, 0 warnings) ===

As I am pretty new to c++ I am trying to understand the error Undefined symbols for architecture x86_64: I have imported the headers directly into my include directory in my project folder and added the include path in my project Compiler settings.

I believe I'm almost there. When I downloaded json_to_cpp I completed the following steps to cmake:

mkdir build
cd build
cmake ..
cmake --build .

resulting in a build directory in the json_to_cpp download folder. This I presume I can think of as a library. Here is the cmake output:

auser@Users-Mac-Pro build % ls
CMakeCache.txt  CMakeFiles

I can only imagine what I am doing wrong. Should I put this build folder into my path to make the contents visible to my Codelite project? Not sure how to resolve this issue, any response is appreciated.

Thomas

Thomas
  • 1
  • 3
  • Your steps to build `json_to_cpp` look correct. For the errors I am not sure how you are linking the required libraries in the project you are building in codelite. – drescherjm Sep 27 '21 at 01:25
  • ***/usr/bin/g++ -c "/Users/auser/Documents/Development/C-Simple-Projects/C-Simple-Projects/JSON_to_C++/main.cpp" -g -O0 -Wall -std=c++17 -o Debug/main.cpp.o -I. -I. -Iinclude /usr/bin/g++ -o Debug/JSON_to_C++ @"JSON_to_C++.txt" -L. -Linclude*** Does not specify the libraries to link. – drescherjm Sep 27 '21 at 01:27
  • okay... the libraries (whatever they are named) are in /Users/auser/Documents/Development/json_to_cpp/build. I will try it... but was hoping for clarity from the developer of json_to_cpp. If I get feedback, I will post here. – Thomas Sep 28 '21 at 02:09
  • Compilation of json_to_cpp is based on CMake. Its `CMakeLists.txt` is well-written. How did you manage to generate from it `Makefile` that doesn't compile? Please show the steps you took. – zkoza Oct 04 '21 at 22:26

0 Answers0