CMake抱怨"CXX编译器识别未知"

Sta*_*tan 13 linux cmake

我下面这个线程,这一个建立自己的KDE没有须藤权限.由于工作站上没有安装Git和CMake.我只是将它们安装在/ home/<user>下,并将/ home/<user>/bin/ home/<user>/lib添加到PATH和LD_LIBRARY_PATH.由于KDE构建仅支持CMake,因此不支持配置.所以我必须通过CMake设置前缀,如下所示:cmake ~/kde-devel/src/kdelibs -DCMAKE_INSTALL_PREFIX=/home/<user>.此时我得到以下错误:

> ~/bin/cmake ~/kde-devel/src/kdelibs -DCMAKE_INSTALL_PREFIX=/home/<user>
-- The CXX compiler identification is unknown
-- Check for working CXX compiler: /home/gnu/bin/c++
-- Check for working CXX compiler: /home/gnu/bin/c++ -- broken
CMake Error at /home/<user>/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake:45 (MESSAGE):
  The C++ compiler "/home/gnu/bin/c++" is not able to compile a simple test
  program.

  It fails with the following output:

   Change Dir: /home/<user>/kde-devel/build/kdelibs/CMakeFiles/CMakeTmp



  Run Build Command:/usr/bin/gmake "cmTryCompileExec/fast"
  ...
Run Code Online (Sandbox Code Playgroud)

我检查了有2个C++编译器:

> where c++
/home/gnu/bin/c++
/usr/bin/c++
Run Code Online (Sandbox Code Playgroud)

我应该将CMake默认C++编译器设置为/usr/bin/c++?如何?或者有什么方法可以解决这个问题吗?

小智 32

apt-get install build-essential在您的系统上运行.

此程序包依赖于被认为对构建至关重要的其他程序包,并将安装它们.如果您发现必须构建软件包,这有助于避免零碎地解决依赖关系.

有关详细信息,请参阅此页面.

  • 请添加一些关于您的解决方案的评论,说明解决问题的原因和方法 (2认同)

arr*_*owd 17

/home/gnu/bin/c++似乎需要额外的标志来正确地链接东西,而CMake不知道这一点.

要使用/usr/bin/c++的编译器运行cmake-DCMAKE_CXX_COMPILER=/usr/bin/c++.

此外,CMAKE_PREFIX_PATH变量设置目标dir,其中应安装项目的文件.它与CMake安装前缀无关,而CMake本身已经知道这一点.

  • `-DCMAKE_CXX_COMPILER=/usr/bin/c++`+ 在 Windows 10 bash shell 上解决了我的问题。我在为 WebAssembly 安装“Emscripten”时遇到了这个问题 (2认同)