[英]GCC versions/flags and FAM
我试图将我们的构建系统从make
移植到CMake
,并且遇到一个令人惊讶的不是“ Googleable”的问题。我们的代码是C ++ 11/14,可以使用GCC6.2很好地进行编译,在调用GCC时, make
应用了不计其数的开关,主要是pedantic警告。 我构建了一个CMake
系统,该系统可以毫无问题地编译(GCC 6.3)大部分代码,但是由于以下原因,某些模块无法构建
灵活的数组成员'blahblah'不在'struct'的末尾
除了它为什么出现在C ++代码中。 为什么要在基于make
的系统中make
编译? AFAIK,灵活数组不是C ++标准的一部分。 GCC特定扩展名? 哪些命令行开关控制FAM行为? 如何像在原始make
系统中那样进行编译?
如果有人需要一小段已编译的代码
struct Foo
{
int _10;
double _20;
int a[];
};
struct Bar
{
Foo foo;
double _1;
int _2;
}
要添加更多上下文,请使用cmake
文件
cmake_minimum_required(版本3.9)
项目(foo版本$ {FOO_VERSION}描述“ foo”)
设置(CMAKE_CXX_STANDARD 14)
设置(CMAKE_C_STANDARD 99)
add_executable(foo foo.cpp foo_backup.cpp main.cpp)
set_target_properties(foo PROPERTIES VERSION $ {PROJECT_VERSION})
target_include_directories(foo PUBLIC $ {CMAKE_SOURCE_DIR} / lib / include $ {CMAKE_SOURCE_DIR} / lib / include / bar)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.