spoutn1k / mcmap

Pixel-art map visualizer for Minecraft. Maps are drawn from an isometric perspective.
GNU General Public License v3.0
312 stars 45 forks source link

`make` fails on macOS 10.14.6 (Mojave) #66

Closed jobatabs closed 3 years ago

jobatabs commented 3 years ago

Hi, thanks for making this software! Really seems like just what I've been looking for.

I tried building just a moment ago according to README. g++ --version outputs:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

I have installed libpng and libomp and they are both latest available version.

cmake was not installed on my system, so I brew install cmake

And then cmake .

I then tried make -j but received numerous errors, so I went back and read if cmake had said anything notable.

Output of cmake .

-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenMP_CXX: -Xclang -fopenmp (found version "3.1") 
-- Found OpenMP: TRUE (found version "3.1")  
-- Found ZLIB: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libz.tbd (found version "1.2.11") 
-- Found PNG: /usr/local/lib/libpng.dylib (found version "1.6.37") 
-- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) 
-- Could NOT find QT (missing: QT_DIR)
CMake Warning (dev) at CMakeLists.txt:20 (FIND_PACKAGE):
  Policy CMP0084 is not set: The FindQt module does not exist for
  find_package().  Run "cmake --help-policy CMP0084" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Could NOT find Qt3 (missing: QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE) 
CMake was unable to find desired Qt version: 3. Set advanced values QT_QMAKE_EXECUTABLE and QT3_QGLOBAL_H_FILE.
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/mcmap

So suspecting that missing qt was the issue, I once again brew install qt. I could not find GTest on brew but decided not to worry about it for now.

Then onto make -j.

I received the same kinds of errors, over and over again from multiple files.

mcmap/src/./canvas.h:168:51: error: 'path' is
      unavailable: introduced in macOS 10.15
mcmap/src/include/nbt/parser.hpp:329:53: error: 
      'string' is unavailable: introduced in macOS 10.15

So it seems the code is only playing nice with macOS 10.15, which is a shame. Upgrading to Catalina is untenable for me. Is there a possibility of an "easy fix" or is this the state of affairs for now? It would be good to mention in the README, as many people are running 10.14.

spoutn1k commented 3 years ago

Hey ! Thanks, but it will be more useful for you when it will work :)

You are right in not worrying about gtest, it and qt are not required to build the CLI (more stable) version of mcmap. Sounds like a standard (version) issue. Apple ships clang disguised as gcc that may not support the C++17 standard I used in the program.

I can think of a few options:

The build succeded with both compilers on macOS tests, but I never encountered your issue.

Please let me know if that helped !

jobatabs commented 3 years ago

Hi, I in fact noticed today I already have a Homebrew-managed version of g++,g++-10. But unfortunately doing CXX=g++-10 make still produces the same errors. This also happens with absolute path CXX=/usr/local/bin/g++-10 make.

jobatabs commented 3 years ago

From man clang:

The default C++ language standard is gnu++14.

But c++17 and gnu++17 are both supported with -std=<std>. Can the Makefile be changed to specify a standard for the clang compiler?

spoutn1k commented 3 years ago

Yes but the important step is that CMake sees it. It selected the clang version:

-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped

The CMake configuration already has the C++17 standard set required, and it generates the Makefile tailored to the system it runs on. I do not not write the Makefile anymore, as CMake is supposed to handle this sort of things.

And standard support is a subjective thing. GCC 8-9 have C++17 support but do not understand <filesystem> which is from C++17.

jobatabs commented 3 years ago

Okay, I rm -rf mcmap/ and started from a clean clone. One CXX=g++-10 cmake . and CXX=g++-10 make -j later, I received another failure, but with different errors.

$ CXX=g++-10 make -j
[  8%] Built target format
[ 20%] Built target regionReader
[ 24%] Built target extractChunk
[ 28%] Building CXX object scripts/CMakeFiles/nbt2json.dir/nbt2json.cpp.o
[ 36%] Built target json2bson
[ 40%] Generating colors.bson
Scanning dependencies of target mcmap_core
[ 44%] Building CXX object src/CMakeFiles/mcmap_core.dir/block_drawers.cpp.o
[ 48%] Building CXX object src/CMakeFiles/mcmap_core.dir/chunk.cpp.o
[ 52%] Building CXX object src/CMakeFiles/mcmap_core.dir/canvas.cpp.o
[ 56%] Building CXX object src/CMakeFiles/mcmap_core.dir/colors.cpp.o
[ 60%] Building CXX object src/CMakeFiles/mcmap_core.dir/helper.cpp.o
[ 64%] Building CXX object src/CMakeFiles/mcmap_core.dir/mcmap.cpp.o
[ 68%] Building CXX object src/CMakeFiles/mcmap_core.dir/png.cpp.o
[ 76%] Building CXX object src/CMakeFiles/mcmap_core.dir/savefile.cpp.o
[ 72%] Building CXX object src/CMakeFiles/mcmap_core.dir/section.cpp.o
[ 80%] Building CXX object src/CMakeFiles/mcmap_core.dir/settings.cpp.o
[ 84%] Building CXX object src/CMakeFiles/mcmap_core.dir/worldloader.cpp.o
In file included from /Users/jonatannoponen/Downloads/mcmap/src/include/nbt/parser.hpp:6,
                 from /Users/jonatannoponen/Downloads/mcmap/scripts/nbt2json.cpp:4:
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp: In instantiation of 'constexpr PointerType nbt::NBT::get_ptr() const [with PointerType = const std::vector<long int>*; typename std::enable_if<(std::is_pointer<_Tp>::value && std::is_const<typename std::remove_pointer<_Tp>::type>::value), int>::type <anonymous> = 0]':
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:815:32:   required from 'constexpr decltype (((const nbt::NBT*)this)->get_ptr<PointerType>()) nbt::NBT::get() const [with PointerType = const std::vector<long int>*; typename std::enable_if<std::is_pointer<_Tp>::value, int>::type <anonymous> = 0; decltype (((const nbt::NBT*)this)->get_ptr<PointerType>()) = const std::vector<long int>*]'
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/to_json.hpp:57:67:   required from here
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:801:24: error: no matching function for call to 'nbt::NBT::get_impl_ptr(const std::vector<long int>*) const'
  801 |     return get_impl_ptr(static_cast<PointerType>(nullptr));
      |            ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:671:15: note: candidate: 'nbt::NBT::tag_byte_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_byte_t*)'
  671 |   tag_byte_t *get_impl_ptr(tag_byte_t *) noexcept {
      |               ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:671:28: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_byte_t*' {aka 'signed char*'}
  671 |   tag_byte_t *get_impl_ptr(tag_byte_t *) noexcept {
      |                            ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:675:31: note: candidate: 'constexpr const tag_byte_t* nbt::NBT::get_impl_ptr(const tag_byte_t*) const'
  675 |   constexpr const tag_byte_t *get_impl_ptr(const tag_byte_t *) const noexcept {
      |                               ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:675:44: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_byte_t*' {aka 'const signed char*'}
  675 |   constexpr const tag_byte_t *get_impl_ptr(const tag_byte_t *) const noexcept {
      |                                            ^~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:680:16: note: candidate: 'nbt::NBT::tag_short_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_short_t*)'
  680 |   tag_short_t *get_impl_ptr(tag_short_t *) noexcept {
      |                ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:680:29: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_short_t*' {aka 'short int*'}
  680 |   tag_short_t *get_impl_ptr(tag_short_t *) noexcept {
      |                             ^~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:685:3: note: candidate: 'constexpr const tag_short_t* nbt::NBT::get_impl_ptr(const tag_short_t*) const'
  685 |   get_impl_ptr(const tag_short_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:685:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_short_t*' {aka 'const short int*'}
  685 |   get_impl_ptr(const tag_short_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:690:14: note: candidate: 'nbt::NBT::tag_int_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_int_t*)'
  690 |   tag_int_t *get_impl_ptr(tag_int_t *) noexcept {
      |              ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:690:27: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_int_t*' {aka 'int*'}
  690 |   tag_int_t *get_impl_ptr(tag_int_t *) noexcept {
      |                           ^~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:694:30: note: candidate: 'constexpr const tag_int_t* nbt::NBT::get_impl_ptr(const tag_int_t*) const'
  694 |   constexpr const tag_int_t *get_impl_ptr(const tag_int_t *) const noexcept {
      |                              ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:694:43: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_int_t*' {aka 'const int*'}
  694 |   constexpr const tag_int_t *get_impl_ptr(const tag_int_t *) const noexcept {
      |                                           ^~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:699:15: note: candidate: 'nbt::NBT::tag_long_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_long_t*)'
  699 |   tag_long_t *get_impl_ptr(tag_long_t *) noexcept {
      |               ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:699:28: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_long_t*' {aka 'long long int*'}
  699 |   tag_long_t *get_impl_ptr(tag_long_t *) noexcept {
      |                            ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:703:31: note: candidate: 'constexpr const tag_long_t* nbt::NBT::get_impl_ptr(const tag_long_t*) const'
  703 |   constexpr const tag_long_t *get_impl_ptr(const tag_long_t *) const noexcept {
      |                               ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:703:44: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_long_t*' {aka 'const long long int*'}
  703 |   constexpr const tag_long_t *get_impl_ptr(const tag_long_t *) const noexcept {
      |                                            ^~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:708:16: note: candidate: 'nbt::NBT::tag_float_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_float_t*)'
  708 |   tag_float_t *get_impl_ptr(tag_float_t *) noexcept {
      |                ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:708:29: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_float_t*' {aka 'float*'}
  708 |   tag_float_t *get_impl_ptr(tag_float_t *) noexcept {
      |                             ^~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:713:3: note: candidate: 'constexpr const tag_float_t* nbt::NBT::get_impl_ptr(const tag_float_t*) const'
  713 |   get_impl_ptr(const tag_float_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:713:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_float_t*' {aka 'const float*'}
  713 |   get_impl_ptr(const tag_float_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:718:17: note: candidate: 'nbt::NBT::tag_double_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_double_t*)'
  718 |   tag_double_t *get_impl_ptr(tag_double_t *) noexcept {
      |                 ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:718:30: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_double_t*' {aka 'double*'}
  718 |   tag_double_t *get_impl_ptr(tag_double_t *) noexcept {
      |                              ^~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:723:3: note: candidate: 'constexpr const tag_double_t* nbt::NBT::get_impl_ptr(const tag_double_t*) const'
  723 |   get_impl_ptr(const tag_double_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:723:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_double_t*' {aka 'const double*'}
  723 |   get_impl_ptr(const tag_double_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:728:21: note: candidate: 'nbt::NBT::tag_byte_array_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_byte_array_t*)'
  728 |   tag_byte_array_t *get_impl_ptr(tag_byte_array_t *) noexcept {
      |                     ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:728:34: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_byte_array_t*' {aka 'std::vector<signed char>*'}
  728 |   tag_byte_array_t *get_impl_ptr(tag_byte_array_t *) noexcept {
      |                                  ^~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:733:3: note: candidate: 'constexpr const tag_byte_array_t* nbt::NBT::get_impl_ptr(const tag_byte_array_t*) const'
  733 |   get_impl_ptr(const tag_byte_array_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:733:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_byte_array_t*' {aka 'const std::vector<signed char>*'}
  733 |   get_impl_ptr(const tag_byte_array_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:738:17: note: candidate: 'nbt::NBT::tag_string_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_string_t*)'
  738 |   tag_string_t *get_impl_ptr(tag_string_t *) noexcept {
      |                 ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:738:30: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_string_t*' {aka 'std::__cxx11::basic_string<char>*'}
  738 |   tag_string_t *get_impl_ptr(tag_string_t *) noexcept {
      |                              ^~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:743:3: note: candidate: 'constexpr const tag_string_t* nbt::NBT::get_impl_ptr(const tag_string_t*) const'
  743 |   get_impl_ptr(const tag_string_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:743:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_string_t*' {aka 'const std::__cxx11::basic_string<char>*'}
  743 |   get_impl_ptr(const tag_string_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:748:15: note: candidate: 'nbt::NBT::tag_list_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_list_t*)'
  748 |   tag_list_t *get_impl_ptr(tag_list_t *) noexcept {
      |               ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:748:28: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_list_t*' {aka 'std::vector<nbt::NBT>*'}
  748 |   tag_list_t *get_impl_ptr(tag_list_t *) noexcept {
      |                            ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:752:31: note: candidate: 'constexpr const tag_list_t* nbt::NBT::get_impl_ptr(const tag_list_t*) const'
  752 |   constexpr const tag_list_t *get_impl_ptr(const tag_list_t *) const noexcept {
      |                               ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:752:44: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_list_t*' {aka 'const std::vector<nbt::NBT>*'}
  752 |   constexpr const tag_list_t *get_impl_ptr(const tag_list_t *) const noexcept {
      |                                            ^~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:757:19: note: candidate: 'nbt::NBT::tag_compound_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_compound_t*)'
  757 |   tag_compound_t *get_impl_ptr(tag_compound_t *) noexcept {
      |                   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:757:32: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_compound_t*' {aka 'std::map<std::__cxx11::basic_string<char>, nbt::NBT>*'}
  757 |   tag_compound_t *get_impl_ptr(tag_compound_t *) noexcept {
      |                                ^~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:762:3: note: candidate: 'constexpr const tag_compound_t* nbt::NBT::get_impl_ptr(const tag_compound_t*) const'
  762 |   get_impl_ptr(const tag_compound_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:762:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_compound_t*' {aka 'const std::map<std::__cxx11::basic_string<char>, nbt::NBT>*'}
  762 |   get_impl_ptr(const tag_compound_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:767:20: note: candidate: 'nbt::NBT::tag_int_array_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_int_array_t*)'
  767 |   tag_int_array_t *get_impl_ptr(tag_int_array_t *) noexcept {
      |                    ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:767:33: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_int_array_t*' {aka 'std::vector<int>*'}
  767 |   tag_int_array_t *get_impl_ptr(tag_int_array_t *) noexcept {
      |                                 ^~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:772:3: note: candidate: 'constexpr const tag_int_array_t* nbt::NBT::get_impl_ptr(const tag_int_array_t*) const'
  772 |   get_impl_ptr(const tag_int_array_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:772:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_int_array_t*' {aka 'const std::vector<int>*'}
  772 |   get_impl_ptr(const tag_int_array_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:777:21: note: candidate: 'nbt::NBT::tag_long_array_t* nbt::NBT::get_impl_ptr(nbt::NBT::tag_long_array_t*)'
  777 |   tag_long_array_t *get_impl_ptr(tag_long_array_t *) noexcept {
      |                     ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:777:34: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'nbt::NBT::tag_long_array_t*' {aka 'std::vector<long long int>*'}
  777 |   tag_long_array_t *get_impl_ptr(tag_long_array_t *) noexcept {
      |                                  ^~~~~~~~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:782:3: note: candidate: 'constexpr const tag_long_array_t* nbt::NBT::get_impl_ptr(const tag_long_array_t*) const'
  782 |   get_impl_ptr(const tag_long_array_t *) const noexcept {
      |   ^~~~~~~~~~~~
/Users/jonatannoponen/Downloads/mcmap/src/include/nbt/nbt.hpp:782:16: note:   no known conversion for argument 1 from 'const std::vector<long int>*' to 'const tag_long_array_t*' {aka 'const std::vector<long long int>*'}
  782 |   get_impl_ptr(const tag_long_array_t *) const noexcept {
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [scripts/CMakeFiles/nbt2json.dir/nbt2json.cpp.o] Error 1
make[1]: *** [scripts/CMakeFiles/nbt2json.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 88%] Linking CXX static library libmcmap_core.a
[ 88%] Built target mcmap_core
make: *** [all] Error 2
jobatabs commented 3 years ago

And here the previous cmake, which seems succesful now.

$ CXX=g++-10 cmake .
-- The CXX compiler identification is GNU 10.2.0
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Checking whether CXX compiler supports OSX deployment target flag
-- Checking whether CXX compiler supports OSX deployment target flag - yes
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/bin/g++-10 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
-- Found ZLIB: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libz.tbd (found version "1.2.11") 
-- Found PNG: /usr/local/lib/libpng.dylib (found version "1.6.37") 
-- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) 
-- Could NOT find QT (missing: QT_DIR)
CMake Warning (dev) at CMakeLists.txt:20 (FIND_PACKAGE):
  Policy CMP0084 is not set: The FindQt module does not exist for
  find_package().  Run "cmake --help-policy CMP0084" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Could NOT find Qt3 (missing: QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE) 
CMake was unable to find desired Qt version: 3. Set advanced values QT_QMAKE_EXECUTABLE and QT3_QGLOBAL_H_FILE.
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/jonatannoponen/Downloads/mcmap
jobatabs commented 3 years ago

Sorry, I had apparently missed this part from your original response:

Set CXX accordingly before the cmake configuration.

spoutn1k commented 3 years ago

I've seen that error before on MSVC compilers. Weird. I've created a new branch, called JSONPatch. It should fix it hopefully.

spoutn1k commented 3 years ago

The last errors from the thread have been resolved on MSVC. Hopefully the program compiles on macOS with the appropriate compiler. Closing old issue.