我试图将我的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
答案 0 :(得分:1)
您的CLion / CMake构建会调用GCC g++
8.1的mingw-w64端口。 C ++编译器优化-fdump-class-hierarchy
是available 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构建失败的对象相同)。