我正在尝试从
make
到
CMake
,我遇到了一个令人惊讶的问题,它不是“Googleable”
我们的代码是C++11/14,使用GCC6.2进行良好编译
制作
调用GCC时应用大量开关,大多数是迂腐的警告。我建造了一个
CMake公司
编译(GCC 6.3)大部分代码时没有问题,但由于以下原因,某些模块未能构建的系统
灵活的数组成员—blahblah—不在—struct—的末尾
撇开它出现在C++代码中的原因不谈。为什么它在
制作
基于系统?好吧,灵活数组不是C++标准的一部分。GCC特定扩展?什么命令行开关控制FAM行为?如何使其像在原始版本中那样编译
制作
系统
以防有人需要一段编译后的代码
struct Foo
{
int _10;
double _20;
int a[];
};
struct Bar
{
Foo foo;
double _1;
int _2;
}
要添加更多上下文,请
cmake
文件
需要cmake\U minimum\U(3.9版)
项目(foo版本${foo\u版本}描述“foo”)
设置(CMAKE\U CXX\U标准14)
设置(CMAKE\U C\U STANDARD 99)
添加\u可执行文件(foo foo.cpp foo\u backup.cpp main.cpp)
set\u target\u属性(foo properties VERSION${PROJECT\u VERSION})
target\u include\u目录(foo PUBLIC${CMAKE\u SOURCE\u DIR}/lib/include${CMAKE\u SOURCE\u DIR}/lib/include/bar)