cc1plus.exe:错误:CMake无法识别命令行选项'-fdump-class-hierarchy'

时间:2019-01-03 12:01:19

标签: c++ cmake clion

我试图将我的c ++程序的每个类的层次结构和虚函数表布局的表示转储到文件中。当我使用以下选项从命令行编译它时,我成功地做到了:

g++ -fdump-class-hierarchy main.cpp

我现在的问题是当我尝试使用cmake使其失败时。从未使用过-fdump-class-hierarchy选项。这是我的CmakeList.txt

cmake_minimum_required(VERSION 3.10.2)
project(VTable)
set(CMAKE_CXX_STANDARD 14)
find_path(GCC_PATH g++.exe)
message("GCC_PATH = ${GCC_PATH}")
set(CMAKE_CXX_COMPILER "${GCC_PATH}/g++")
set(CMAKE_CXX_FLAGS         "-std=c++11 -Wall -Wno-unused-variable -fdump-class-hierarchy")
set(CMAKE_CXX_FLAGS_DEBUG   "-O0 -g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
add_executable(VTable main.cpp Grandparent.cpp Parent1.cpp Parent2.cpp Child.cpp)

有人可以帮我从CmakeList.txt获取转储文件的输出吗,顺便问一下,有人知道有什么方法可以仅转储我的类代码

问题输出在这里

"C:\Program Files\JetBrains\CLion 2018.2.4\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" "path"
GCC_PATH = C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin
-- Configuring done
-- Generating done
-- Build files have been written to: path/cmake-build-debug

Problems were encountered while collecting compiler information:
    cc1plus.exe: error: unrecognized command line option '-fdump-class-hierarchy'

[Finished]

我正在使用CLion IDE

1 个答案:

答案 0 :(得分:1)

您的CLion / CMake构建会调用GCC g++ 8.1的mingw-w64端口。 C ++编译器优化-fdump-class-hierarchyavailable in GCC 7.x及更早版本,但 removed in GCC 8.x。这就是为什么:

cc1plus.exe: error: unrecognized command line option '-fdump-class-hierarchy'

在您的CLion版本中。如果是控制台命令行:

g++ -fdump-class-hierarchy main.cpp

成功后,它从另一个调用了一个不同的g++的早期版本 GCC安装-可能是在您的PATH中早于C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++.exe发现的, 或在其他计算机上发现(因为您未声明是 与您的CLion构建失败的对象相同)。