The commands in the readme Linux section says:
Your Linux distribution might default to gcc instead of clang, if that's the case invoke cmake with the following command:
But the following command matches the one above.
I tried the obvious to set CC to /usr/bin/clang and CXX to /usr/bin/clang++ prior to running cmake. cmake completes, but the build fails with some fairly basic #include file not found errors (things like
I'm building on Fedora 28 x86_64.
Whoops, looks like an issue in the documentation. Which version of clang are you using to build, and can you give the specific errors clang spits out?
I'm using clang 6.0.1.
All basic file not found errors:
../../libs/filaflat/include/filaflat/ShaderBuilder.h:20:10: fatal error: 'cstddef' file not found
../../libs/filaflat/include/filaflat/FilaflatDefs.h:21:10: fatal error: 'string' file not found
../../libs/math/include/math/TVecHelpers.h:25:10: fatal error: 'cmath' file not found
../../libs/filabridge/include/filament/SamplerInterfaceBlock.h:21:10: fatal error: 'map' file not found
I didn't look close enough to figure out how it is killing off the standard include paths.
`
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/ShaderBuilder.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/ShaderBuilder.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/ShaderBuilder.cpp.o -c ../../libs/filaflat/src/ShaderBuilder.cpp
In file included from ../../libs/filaflat/src/ShaderBuilder.cpp:17:
../../libs/filaflat/include/filaflat/ShaderBuilder.h:20:10: fatal error: 'cstddef' file not found
^~~~~~~~~
1 error generated.
[2/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkContainer.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkContainer.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkContainer.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkContainer.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkContainer.cpp.o -c ../../libs/filaflat/src/ChunkContainer.cpp
In file included from ../../libs/filaflat/src/ChunkContainer.cpp:17:
In file included from ../../libs/filaflat/include/filaflat/ChunkContainer.h:21:
../../libs/filaflat/include/filaflat/FilaflatDefs.h:21:10: fatal error: 'string' file not found
^~~~~~~~
1 error generated.
[3/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/Unflattener.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/Unflattener.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/Unflattener.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/Unflattener.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/Unflattener.cpp.o -c ../../libs/filaflat/src/Unflattener.cpp
In file included from ../../libs/filaflat/src/Unflattener.cpp:17:
In file included from ../../libs/filaflat/include/filaflat/Unflattener.h:20:
In file included from ../../libs/filaflat/include/filaflat/ChunkContainer.h:21:
../../libs/filaflat/include/filaflat/FilaflatDefs.h:21:10: fatal error: 'string' file not found
^~~~~~~~
1 error generated.
[4/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/TextDictionaryReader.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/TextDictionaryReader.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/TextDictionaryReader.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/TextDictionaryReader.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/TextDictionaryReader.cpp.o -c ../../libs/filaflat/src/TextDictionaryReader.cpp
In file included from ../../libs/filaflat/src/TextDictionaryReader.cpp:17:
In file included from ../../libs/filaflat/src/TextDictionaryReader.h:20:
In file included from ../../libs/filaflat/include/filaflat/ChunkContainer.h:21:
../../libs/filaflat/include/filaflat/FilaflatDefs.h:21:10: fatal error: 'string' file not found
^~~~~~~~
1 error generated.
[5/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/SpirvDictionaryReader.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/SpirvDictionaryReader.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/SpirvDictionaryReader.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/SpirvDictionaryReader.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/SpirvDictionaryReader.cpp.o -c ../../libs/filaflat/src/SpirvDictionaryReader.cpp
In file included from ../../libs/filaflat/src/SpirvDictionaryReader.cpp:17:
In file included from ../../libs/filaflat/src/SpirvDictionaryReader.h:20:
In file included from ../../libs/filaflat/include/filaflat/ChunkContainer.h:21:
../../libs/filaflat/include/filaflat/FilaflatDefs.h:21:10: fatal error: 'string' file not found
^~~~~~~~
1 error generated.
[6/847] Building CXX object libs/filabridge/CMakeFiles/filabridge.dir/src/SibGenerator.cpp.o
FAILED: libs/filabridge/CMakeFiles/filabridge.dir/src/SibGenerator.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -fPIC -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -MD -MT libs/filabridge/CMakeFiles/filabridge.dir/src/SibGenerator.cpp.o -MF libs/filabridge/CMakeFiles/filabridge.dir/src/SibGenerator.cpp.o.d -o libs/filabridge/CMakeFiles/filabridge.dir/src/SibGenerator.cpp.o -c ../../libs/filabridge/src/SibGenerator.cpp
In file included from ../../libs/filabridge/src/SibGenerator.cpp:17:
In file included from ../../libs/filabridge/include/private/filament/SibGenerator.h:20:
../../libs/filabridge/include/filament/SamplerInterfaceBlock.h:21:10: fatal error: 'map' file not found
^~~~~
1 error generated.
[7/847] Building CXX object libs/filabridge/CMakeFiles/filabridge.dir/src/UibGenerator.cpp.o
FAILED: libs/filabridge/CMakeFiles/filabridge.dir/src/UibGenerator.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -fPIC -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -MD -MT libs/filabridge/CMakeFiles/filabridge.dir/src/UibGenerator.cpp.o -MF libs/filabridge/CMakeFiles/filabridge.dir/src/UibGenerator.cpp.o.d -o libs/filabridge/CMakeFiles/filabridge.dir/src/UibGenerator.cpp.o -c ../../libs/filabridge/src/UibGenerator.cpp
In file included from ../../libs/filabridge/src/UibGenerator.cpp:17:
In file included from ../../libs/filabridge/include/private/filament/UibGenerator.h:20:
In file included from ../../libs/filabridge/include/filament/UniformInterfaceBlock.h:20:
In file included from ../../libs/filabridge/include/filament/driver/DriverEnums.h:22:
In file included from ../../libs/math/include/math/vec4.h:20:
In file included from ../../libs/math/include/math/vec3.h:20:
In file included from ../../libs/math/include/math/vec2.h:20:
../../libs/math/include/math/TVecHelpers.h:25:10: fatal error: 'cmath' file not found
^~~~~~~
1 error generated.
[8/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialChunk.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialChunk.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialChunk.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialChunk.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialChunk.cpp.o -c ../../libs/filaflat/src/MaterialChunk.cpp
In file included from ../../libs/filaflat/src/MaterialChunk.cpp:17:
In file included from ../../libs/filaflat/src/MaterialChunk.h:20:
../../libs/filaflat/src/BlobDictionary.h:20:10: fatal error: 'vector' file not found
^~~~~~~~
1 error generated.
[9/847] Building CXX object libs/filabridge/CMakeFiles/filabridge.dir/src/UniformInterfaceBlock.cpp.o
FAILED: libs/filabridge/CMakeFiles/filabridge.dir/src/UniformInterfaceBlock.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -fPIC -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -MD -MT libs/filabridge/CMakeFiles/filabridge.dir/src/UniformInterfaceBlock.cpp.o -MF libs/filabridge/CMakeFiles/filabridge.dir/src/UniformInterfaceBlock.cpp.o.d -o libs/filabridge/CMakeFiles/filabridge.dir/src/UniformInterfaceBlock.cpp.o -c ../../libs/filabridge/src/UniformInterfaceBlock.cpp
In file included from ../../libs/filabridge/src/UniformInterfaceBlock.cpp:17:
In file included from ../../libs/filabridge/include/filament/UniformInterfaceBlock.h:20:
In file included from ../../libs/filabridge/include/filament/driver/DriverEnums.h:22:
In file included from ../../libs/math/include/math/vec4.h:20:
In file included from ../../libs/math/include/math/vec3.h:20:
In file included from ../../libs/math/include/math/vec2.h:20:
../../libs/math/include/math/TVecHelpers.h:25:10: fatal error: 'cmath' file not found
^~~~~~~
1 error generated.
[10/847] Building CXX object libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerInterfaceBlock.cpp.o
FAILED: libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerInterfaceBlock.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -fPIC -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -MD -MT libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerInterfaceBlock.cpp.o -MF libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerInterfaceBlock.cpp.o.d -o libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerInterfaceBlock.cpp.o -c ../../libs/filabridge/src/SamplerInterfaceBlock.cpp
In file included from ../../libs/filabridge/src/SamplerInterfaceBlock.cpp:17:
../../libs/filabridge/include/filament/SamplerInterfaceBlock.h:21:10: fatal error: 'map' file not found
^~~~~
1 error generated.
[11/847] Building CXX object libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerBindingMap.cpp.o
FAILED: libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerBindingMap.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -fPIC -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -MD -MT libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerBindingMap.cpp.o -MF libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerBindingMap.cpp.o.d -o libs/filabridge/CMakeFiles/filabridge.dir/src/SamplerBindingMap.cpp.o -c ../../libs/filabridge/src/SamplerBindingMap.cpp
In file included from ../../libs/filabridge/src/SamplerBindingMap.cpp:17:
In file included from ../../libs/filabridge/include/filament/SamplerBindingMap.h:20:
In file included from ../../libs/filabridge/include/filament/EngineEnums.h:20:
In file included from ../../libs/utils/include/utils/bitset.h:20:
../../libs/utils/include/utils/algorithm.h:22:10: fatal error: 'functional' file not found
^~~~~~~~~~~~
1 error generated.
[12/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialParser.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialParser.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialParser.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialParser.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/MaterialParser.cpp.o -c ../../libs/filaflat/src/MaterialParser.cpp
In file included from ../../libs/filaflat/src/MaterialParser.cpp:17:
In file included from ../../libs/filaflat/include/filaflat/MaterialParser.h:20:
In file included from ../../libs/filabridge/include/filament/EngineEnums.h:20:
In file included from ../../libs/utils/include/utils/bitset.h:20:
../../libs/utils/include/utils/algorithm.h:22:10: fatal error: 'functional' file not found
^~~~~~~~~~~~
1 error generated.
[13/847] Building CXX object libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkInterfaceBlock.cpp.o
FAILED: libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkInterfaceBlock.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/filaflat/include -I../../libs/filabridge/include -I../../libs/utils/include -I../../third_party/robin-map/tnt/.. -I../../libs/math/include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fPIC -MD -MT libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkInterfaceBlock.cpp.o -MF libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkInterfaceBlock.cpp.o.d -o libs/filaflat/CMakeFiles/filaflat.dir/src/ChunkInterfaceBlock.cpp.o -c ../../libs/filaflat/src/ChunkInterfaceBlock.cpp
In file included from ../../libs/filaflat/src/ChunkInterfaceBlock.cpp:17:
In file included from ../../libs/filaflat/src/ChunkInterfaceBlock.h:20:
../../libs/filabridge/include/filament/SamplerInterfaceBlock.h:21:10: fatal error: 'map' file not found
^~~~~
1 error generated.
[14/847] Building CXX object libs/math/CMakeFiles/test_math.dir/tests/test_fast.cpp.o
FAILED: libs/math/CMakeFiles/test_math.dir/tests/test_fast.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/math/include -I../../third_party/libgtest/tnt/../include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -pthread -MD -MT libs/math/CMakeFiles/test_math.dir/tests/test_fast.cpp.o -MF libs/math/CMakeFiles/test_math.dir/tests/test_fast.cpp.o.d -o libs/math/CMakeFiles/test_math.dir/tests/test_fast.cpp.o -c ../../libs/math/tests/test_fast.cpp
In file included from ../../libs/math/tests/test_fast.cpp:19:
../../third_party/libgtest/tnt/../include/gtest/gtest.h:54:10: fatal error: 'limits' file not found
^~~~~~~~
1 error generated.
[15/847] Building CXX object libs/math/CMakeFiles/test_math.dir/tests/test_vec.cpp.o
FAILED: libs/math/CMakeFiles/test_math.dir/tests/test_vec.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/math/include -I../../third_party/libgtest/tnt/../include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -pthread -MD -MT libs/math/CMakeFiles/test_math.dir/tests/test_vec.cpp.o -MF libs/math/CMakeFiles/test_math.dir/tests/test_vec.cpp.o.d -o libs/math/CMakeFiles/test_math.dir/tests/test_vec.cpp.o -c ../../libs/math/tests/test_vec.cpp
In file included from ../../libs/math/tests/test_vec.cpp:19:
../../third_party/libgtest/tnt/../include/gtest/gtest.h:54:10: fatal error: 'limits' file not found
^~~~~~~~
1 error generated.
[16/847] Building CXX object third_party/libgtest/tnt/CMakeFiles/gtest.dir/__/src/gtest-all.cc.o
FAILED: third_party/libgtest/tnt/CMakeFiles/gtest.dir/__/src/gtest-all.cc.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../third_party/libgtest/tnt/../include -I../../third_party/libgtest/tnt/.. -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -pthread -MD -MT third_party/libgtest/tnt/CMakeFiles/gtest.dir/__/src/gtest-all.cc.o -MF third_party/libgtest/tnt/CMakeFiles/gtest.dir/__/src/gtest-all.cc.o.d -o third_party/libgtest/tnt/CMakeFiles/gtest.dir/__/src/gtest-all.cc.o -c ../../third_party/libgtest/src/gtest-all.cc
In file included from ../../third_party/libgtest/src/gtest-all.cc:39:
../../third_party/libgtest/tnt/../include/gtest/gtest.h:54:10: fatal error: 'limits' file not found
^~~~~~~~
1 error generated.
[17/847] Building CXX object libs/math/CMakeFiles/test_math.dir/tests/test_quat.cpp.o
FAILED: libs/math/CMakeFiles/test_math.dir/tests/test_quat.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/math/include -I../../third_party/libgtest/tnt/../include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -pthread -MD -MT libs/math/CMakeFiles/test_math.dir/tests/test_quat.cpp.o -MF libs/math/CMakeFiles/test_math.dir/tests/test_quat.cpp.o.d -o libs/math/CMakeFiles/test_math.dir/tests/test_quat.cpp.o -c ../../libs/math/tests/test_quat.cpp
../../libs/math/tests/test_quat.cpp:18:10: fatal error: 'random' file not found
^~~~~~~~
1 error generated.
[18/847] Building CXX object libs/math/CMakeFiles/test_math.dir/tests/test_mat.cpp.o
FAILED: libs/math/CMakeFiles/test_math.dir/tests/test_mat.cpp.o
/usr/bin/clang++ -DFILAMENT_DRIVER_SUPPORTS_VULKAN -I../../libs/math/include -I../../third_party/libgtest/tnt/../include -std=c++14 -fstrict-aliasing -Wno-unknown-pragmas -Wno-unused-function -stdlib=libc++ -fcolor-diagnostics -O2 -DNDEBUG -fomit-frame-pointer -ffunction-sections -fdata-sections -pthread -MD -MT libs/math/CMakeFiles/test_math.dir/tests/test_mat.cpp.o -MF libs/math/CMakeFiles/test_math.dir/tests/test_mat.cpp.o.d -o libs/math/CMakeFiles/test_math.dir/tests/test_mat.cpp.o -c ../../libs/math/tests/test_mat.cpp
In file included from ../../libs/math/tests/test_mat.cpp:17:
../../third_party/libgtest/tnt/../include/gtest/gtest.h:54:10: fatal error: 'limits' file not found
^~~~~~~~
1 error generated.
`
I experience the problem on ubuntu 18.04.
Thanks for reporting this issue. We only support compiling with clang and you need to have the clang STL installed (it should be mentioned in README.md, you need to install libc++-dev and possibly libc++abi-dev).
I'll fix the docs, it's supposed to prefix cmake with CC=… CXX=… like you did.
I just updated the README, please let me know if installing libc++-dev fixes the other issue for you.
On ubuntu 18.04, installing libc++-dev and libc++abi-dev makes the compilation work. Now I get link errors though:
[ 13%] Linking CXX executable test_math
CMakeFiles/test_math.dir/tests/test_fast.cpp.o: In function `__clang_call_terminate':
test_fast.cpp:(.text.__clang_call_terminate[__clang_call_terminate]+0x2): undefined reference to `__cxa_begin_catch'
> clang++ --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Same issue here using the same setup.
You can fix this by passing -DFILAMENT_REQUIRES_CXXABI=true to cmake. We use this is our CI environment for the same reason, I just don't know in what cases it's sometimes necessary. What this flag does is add -lc++abi to link against libc++abi instead of GCC's runtime.
BTW if anybody know how to make this work properly, I'm all ears. I made linking against libc++abi optional because on the Linux distributions we use at work (Debian Rodete) using the flag breaks compilation. I do need to use it on Ubuntu 14 (you can see what we do for Ubuntu 14 in build/linux/ci-common.sh) for continuous builds though. Not being a daily Linux user I'm not entirely sure what the problem is.
I did manage to get the release build to link on fedora by commenting out the -static-libgcc -static-libstdc++ in the CMakeLists.txt and using the -DFILAMENT_REQUIRES_CXXABI=true flag for cmake (unclear if that was needed).
It is unclear why it wasn't finding the static libraries (I installed libstdc++-static-8.1.1-5.fc28.x86_64).
My initial problem was caused by a missing libstdc++ devel package (I just assumed it had be installed previously).
The static link is there only for us when we need to distribute binaries. For your own machine... :))
Same issue on Ubuntu 18.04, but work around resolved it. As for a proper fix I didn't have enough free time to take a look.
Why do development on Ubuntu 14.04? It would seem to be easier to do Vulkan dev on a distro that's not so close to EOL. Even its replacement Ubuntu 16.04 is going maintenance only this year (2018).
Just got the build to work on Ubuntu 18.04. In addition to following the instructions in the readme for setting the compiler to Clang, I needed to pass the -DFILAMENT_REQUIRES_CXXABI=true flag and install libxi-dev, which seems to be required by the copy of SDL2 in the third_party directory.
Might be worth adding libxi-dev, cmake and clang to the list of dependencies, although it's fairly obvious from reading the rest of the readme that those last two are needed.
@thendrix This particular CI infrastructure uses Ubuntu 14, I do not control this. We actually develop on Debian Rodete.
@RoryDungan The README already mentions that cmake and clang are required (they're the first listed requirements :). Good catch about libxi-dev, I'll add it to the README.
It would be useful to check the minimum versions in the CMake. Somehow I missed that in the docs. It took a few tweaks to build on Ubuntu 16.04. Starting with d9ba3998d2d986fa0b20db81fce27b5bdf0771a2, I followed these steps:
# install dependencies
sudo apt install cmake ninja-build clang-6.0 libglu1-mesa-dev libc++-dev libc++abi-dev libxi-dev
# apply patch to fix compile/link errors
git apply <<'EOF'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8ca0d25..5fa5c27 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,13 +74,14 @@ endif()
if (LINUX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem /usr/include/libcxxabi")
if (FILAMENT_REQUIRES_CXXABI)
# Required in CI environment with custom libc++ and libc++abi
link_libraries("-lc++abi")
endif()
# To distribute our binaries, we must remove the dependency on libc++ and libgcc.
if (CMAKE_BUILD_TYPE STREQUAL "Release")
- link_libraries("-static-libgcc -static-libstdc++")
+# link_libraries("-static-libgcc -static-libstdc++")
endif()
else()
if (FILAMENT_REQUIRES_CXXABI)
EOF
# configure
CC=/usr/bin/clang-6.0 CXX=/usr/bin/clang++-6.0 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/release/filament -DFILAMENT_REQUIRES_CXXABI=true -H. -Bout/cmake-release -G Ninja
# build
ninja -C out/cmake-release
The README does specify that clang 5.0 is the minimum.
Opps. I saw that just after I posted and I edited my comment, but you're way too fast!
Thanks to @cgmb the readme now checks whether clang is the compiler and that it is the right version.
Most helpful comment
You can fix this by passing
-DFILAMENT_REQUIRES_CXXABI=truetocmake. We use this is our CI environment for the same reason, I just don't know in what cases it's sometimes necessary. What this flag does is add-lc++abito link againstlibc++abiinstead of GCC's runtime.