【问题标题】:cc1plus.exe: error: unrecognized command line option '-fdump-class-hierarchy' with CMakecc1plus.exe:错误:CMake 无法识别命令行选项“-fdump-class-hierarchy”
【发布时间】:2019-01-03 12:01:19
【问题描述】:

我正在尝试将我的 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

【问题讨论】:

  • 您的错误信息不清楚。我仍然不知道是在配置还是构建步骤。而且您仍然将-fdump-class-hierarchy 附加到链接器标志。
  • @arrowd 我忘了删除它,但这不是我过去尝试过的问题。我现在删除了它

标签: c++ cmake clion


【解决方案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

成功然后它从不同的 GCC 安装 - 可能在您的 PATH 中比 C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++.exe 更早发现, 或者可能是在另一台计算机上发现的(因为您没有声明它是 与您的 CLion 构建失败的相同)。

【讨论】:

  • 完全如你所说!错误消失,编译成功。一个更快的最后一个问题。你猜为什么没有创建内存转储文件?
  • @MixalisNavridis 抱歉,我不清楚你的意思。最好提出一个新问题。
  • "从 GCC 8.0 版开始,至少这两个选项被替换了:-fdump-class-hierarchy ---> -fdump-lang-class -fdump-translation-unit ---> -fdump- lang-raw"
猜你喜欢
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多