[英]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.