結論から言うとgccが古かったという話。
Run Build Command(s):/usr/bin/make cmTC_13dca/fast && /usr/bin/make -f CMakeFiles/cmTC_13dca.dir/build.make CMakeFiles/cmTC_13dca.dir/build make[1]: ディレクトリ '/usr/local/gerbera/src/gerbera/CMakeFiles/CMakeTmp' に入ります Building CXX object CMakeFiles/cmTC_13dca.dir/CheckIncludeFile.cxx.o /usr/local/gerbera/bin/g++ -std=c++1z -o CMakeFiles/cmTC_13dca.dir/CheckIncludeFile.cxx.o -c /usr/local/gerbera/src/gerbera/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx /usr/local/gerbera/src/gerbera/CMakeFiles/CMakeTmp/CheckIncludeFile.cxx:1:10: 致命的エラー: filesystem: そのようなファイルやディレクトリはありません #include <filesystem> ^~~~~~~~~~~~ コンパイルを停止しました。 CMakeFiles/cmTC_13dca.dir/build.make:84: ターゲット 'CMakeFiles/cmTC_13dca.dir/CheckIncludeFile.cxx.o' のレシピで失敗しました make[1]: *** [CMakeFiles/cmTC_13dca.dir/CheckIncludeFile.cxx.o] エラー 1 make[1]: ディレクトリ '/usr/local/gerbera/src/gerbera/CMakeFiles/CMakeTmp' から出ます Makefile:140: ターゲット 'cmTC_13dca/fast' のレシピで失敗しました make: *** [cmTC_13dca/fast] エラー 2
何だかfilesystemがincludeできないというエラー。試しに下記のコードを書いてみる。
gerbera@fs0:~/src/gerbera$ cat test.c #include<filesystem>
gerbera@fs0:~/src/gerbera$ /usr/local/gerbera/bin/g++ -o test.o -c ./test.c ./test.c:1:9: 致命的エラー: filesystem: そのようなファイルやディレクトリはありません #include<filesystem> ^~~~~~~~~~~~ コンパイルを停止しました。
確かにコンパイルできない。gccのバージョンは下記。
gerbera@fs0:~/src/gerbera$ /usr/local/gerbera/bin/g++ --version g++ (GCC) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ちなみに<external/filesystem>とするとコンパイルは通る。
Webにはgccの各バージョンで挙動を確認できるサイトが存在する。
上のサイトで確認すると、gcc7.xはエラーになるが、8.x以降は問題ないらしい。どうやら7.xでは試験的な機能だったらしい。