Thursday, October 28, 2021

[SOLVED] How do I fix the "No known features for CXX compiler" while compiling with CMake (Linux Mint)

Issue

I am trying to install this plugin: https://github.com/CatxFish/obs-v4l2sink

I followed all the steps (Installed QT, got obs-studio source code and then tried to build the plugin):

sudo apt install qtbase5-dev

git clone --recursive https://github.com/obsproject/obs-studio.git

git clone https://github.com/CatxFish/obs-v4l2sink.git
cd obs-v4l2sink
mkdir build && cd build
cmake -DLIBOBS_INCLUDE_DIR="../../obs-studio/libobs" -DCMAKE_INSTALL_PREFIX=/usr ..

But then...

 -- Configuring done
CMake Error in CMakeLists.txt:
  No known features for CXX compiler

  ""

  version .


-- Build files have been written to: /home/********/obs-v4l2sink/build

It is my first time compiling using cmake (instead of make), and I don't know much about compiling. Was there any step I missed between installing cmake and trying to compile the plugin?

From what I found online, here's what I have done:

  • build-essential is already installed;
  • c++, cc and all are installed as well;
  • tried to add -DCMAKE_CXX_COMPILER=/usr/bin/cc to the cmake command line (did the same with c++);

And of course, I have done the update && upgrade

Here's what's in the CMakeError.log file :

Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler: /usr/bin/cc 
Build flags: 
Id flags:  

The output was:
1
/usr/bin/ld : ne peut pas trouver Scrt1.o : Aucun fichier ou dossier de ce type
/usr/bin/ld : ne peut pas trouver crti.o : Aucun fichier ou dossier de ce type
collect2: error: ld returned 1 exit status


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags:  

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: -c 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --c++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --ec++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags:  

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: -c 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --c++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --ec++ 

The output was:
No such file or directory


Determining if the C compiler works failed with the following output:
Change Dir: /home/***********/obs-v4l2sink/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_f18b2/fast"
/usr/bin/make -f CMakeFiles/cmTC_f18b2.dir/build.make CMakeFiles/cmTC_f18b2.dir/build
make[1] : on entre dans le rĂ©pertoire « /home/***********/obs-v4l2sink/build/CMakeFiles/CMakeTmp »
Building C object CMakeFiles/cmTC_f18b2.dir/testCCompiler.c.o
/usr/bin/cc    -o CMakeFiles/cmTC_f18b2.dir/testCCompiler.c.o   -c /home/***********/obs-v4l2sink/build/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_f18b2
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f18b2.dir/link.txt --verbose=1
/usr/bin/cc      CMakeFiles/cmTC_f18b2.dir/testCCompiler.c.o  -o cmTC_f18b2 
/usr/bin/ld : ne peut pas trouver Scrt1.o : Aucun fichier ou dossier de ce type
/usr/bin/ld : ne peut pas trouver crti.o : Aucun fichier ou dossier de ce type
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_f18b2.dir/build.make:97: recipe for target 'cmTC_f18b2' failed
make[1]: *** [cmTC_f18b2] Error 1
make[1] : on quitte le rĂ©pertoire « /home/***********/obs-v4l2sink/build/CMakeFiles/CMakeTmp »
Makefile:126: recipe for target 'cmTC_f18b2/fast' failed
make: *** [cmTC_f18b2/fast] Error 2


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags:  

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: -c 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --c++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --ec++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags:  

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: -c 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --c++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --ec++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags:  

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: -c 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --c++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --ec++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags:  

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: -c 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --c++ 

The output was:
No such file or directory


Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler: CMAKE_CXX_COMPILER-NOTFOUND 
Build flags: 
Id flags: --ec++ 

The output was:
No such file or directory


Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
c++: fatal error: no input files
compilation terminated.
Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler":
c++: fatal error: no input files
compilation terminated.

Solution

Turning my comment into an answer:

The error message is peculiar. It looks like CMake previously detected a C++ compiler, and is searching for compiler features for it. However, now it cannot find that compiler (blank compiler name and version):

CMake Error in CMakeLists.txt:
  No known features for CXX compiler

  ""

  version .

This is indicative of a stale CMake configuration, and it may be useful to clean it up. Try removing the build folder altogether, and run the CMake steps again from the tutorial (starting from creation of the build folder as shown below). This will help clear out the old/cached CMake settings:

mkdir build && cd build
cmake -DLIBOBS_INCLUDE_DIR="../../obs-studio/libobs" -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install


Answered By - squareskittles