terba/slimmer

doesn't compile on Debian

droidboxma opened this issue · 5 comments

pi@audiobox:/slimmer $ mkdir 20170708
pi@audiobox:
/slimmer $ cd 20170708/
pi@audiobox:/slimmer/20170708 $ git clone
https://github.com/terba/slimmer.git
Klone nach 'slimmer'...
remote: Counting objects: 225, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 225 (delta 9), reused 3 (delta 0), pack-reused 195
Empfange Objekte: 100% (225/225), 252.01 KiB | 0 bytes/s, Fertig.
Löse Unterschiede auf: 100% (89/89), Fertig.
Prüfe Konnektivität... Fertig.
pi@audiobox:
/slimmer/20170708 $ mkdir slimmer-build
pi@audiobox:/slimmer/20170708 $ cd slimmer-build
pi@audiobox:
/slimmer/20170708/slimmer-build $ cmake
-DCMAKE_BUILD_TYPE=Release ../slimmer
-- The CXX compiler identification is GNU 4.9.2
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to:
/home/pi/slimmer/20170708/slimmer-build
pi@audiobox:~/slimmer/20170708/slimmer-build $ make
Scanning dependencies of target slimmer
[ 4%] Building CXX object CMakeFiles/slimmer.dir/Button.cpp.o
[ 8%] Building CXX object CMakeFiles/slimmer.dir/Config.cpp.o
/home/pi/slimmer/20170708/slimmer/Config.cpp: In static member function
‘static void Config::discoverLMS()’:
/home/pi/slimmer/20170708/slimmer/Config.cpp:163:73: error:
‘runtime_error’ was not declared in this scope
throw runtime_error("Can not create discovery socket. Errno: " +
errno);
^
/home/pi/slimmer/20170708/slimmer/Config.cpp:167:78: error:
‘runtime_error’ was not declared in this scope
throw runtime_error("Can not set discovery socket options. Errno: " +
errno);
^
/home/pi/slimmer/20170708/slimmer/Config.cpp:173:85: error:
‘runtime_error’ was not declared in this scope
throw runtime_error("Can not set discovery socket timeout option.
Errno: " + errno);
^
/home/pi/slimmer/20170708/slimmer/Config.cpp:181:71: error:
‘runtime_error’ was not declared in this scope
throw runtime_error("Can not send discovery packet. Errno: " + errno);
^
CMakeFiles/slimmer.dir/build.make:86: recipe for target
'CMakeFiles/slimmer.dir/Config.cpp.o' failed
make[2]: *** [CMakeFiles/slimmer.dir/Config.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/slimmer.dir/all'
failed
make[1]: *** [CMakeFiles/slimmer.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

terba commented

Please try adding the following line into Config.cpp somewhere at the top where the other includes are:

#include <stdexcept>

Hey, did you change anything?
I setup a new debian9 VM and start with compiling:
user@debian9:/usr/src/build/slimmer-build$ cmake -DCMAKE_BUILD_TYPE=MinSizeRel ../slimmer -- The CXX compiler identification is GNU 6.3.0 -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /usr/src/build/slimmer-build user@debian9:/usr/src/build/slimmer-build$ make Scanning dependencies of target slimmer [ 4%] Building CXX object CMakeFiles/slimmer.dir/Button.cpp.o [ 8%] Building CXX object CMakeFiles/slimmer.dir/Config.cpp.o [ 12%] Building CXX object CMakeFiles/slimmer.dir/Controller.cpp.o [ 16%] Building CXX object CMakeFiles/slimmer.dir/MenuItem.cpp.o [ 20%] Building CXX object CMakeFiles/slimmer.dir/Player.cpp.o [ 25%] Building CXX object CMakeFiles/slimmer.dir/Screen.cpp.o [ 29%] Building CXX object CMakeFiles/slimmer.dir/ScreenError.cpp.o [ 33%] Building CXX object CMakeFiles/slimmer.dir/ScreenMenu.cpp.o [ 37%] Building CXX object CMakeFiles/slimmer.dir/ScreenNowPlaying.cpp.o [ 41%] Building CXX object CMakeFiles/slimmer.dir/ScreenVolume.cpp.o [ 45%] Building CXX object CMakeFiles/slimmer.dir/Server.cpp.o [ 50%] Building CXX object CMakeFiles/slimmer.dir/json/jsoncpp.cpp.o [ 54%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/client/batchcall.cpp.o [ 58%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/client/batchresponse.cpp.o [ 62%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/client/client.cpp.o [ 66%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/client/connectors/httpclient.cpp.o [ 70%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/client/rpcprotocolclient.cpp.o [ 75%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/common/errors.cpp.o [ 79%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/common/exception.cpp.o [ 83%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/common/procedure.cpp.o [ 87%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/common/specificationparser.cpp.o [ 91%] Building CXX object CMakeFiles/slimmer.dir/jsonrpccpp/common/specificationwriter.cpp.o [ 95%] Building CXX object CMakeFiles/slimmer.dir/main.cpp.o In file included from /usr/src/build/slimmer/main.cpp:28:0: /usr/src/build/slimmer/libev/ev.c:1825:31: warning: ‘ev_default_loop_ptr’ initialized and declared ‘extern’ EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0; /* needs to be initialised to make it a definition despite extern */ ^~~~~~~~~~~~~~~~~~~ [100%] Linking CXX executable slimmer [100%] Built target slimmer
It looks good but i change nothing

terba commented

I didn't either :) It compiles on all the machines I use. Can you try out the include I wrote above on the older Debian?

Hey Okay.

I find the old Debian 8.8 installation. I insert "#include " and it compile perfect. When i remark the include, the compile breaks. Thank you.

terba commented

Thanks for the test!