2016-03-31 24 views
3

Projemizi gcc with -Wall -Werror seçeneklerini kullanarak oluşturuyoruz. Dış başlıklarından Uyarılar böyle, pragmas tarafından baskılanır:gcc: bastırma [varsayılan olarak etkin] C++ kodundan uyarı

error: inline function ‘...’ given attribute noinline [-Werror] 

Ya uyarıyı -Werror kullanmamak olmadan:

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" 
#include <somelib/component/settings.h> 
#pragma GCC diagnostic pop 

yeni sürüme Externals yükselttikten sonra biz bastırmak için uyarıların yeni tip var

warning: inline function ‘...’ given attribute noinline [enabled by default] 

Görünüşe göre #pragma GCC tanılaması göz ardı edildi.

Bu durumda aşağıdaki durumlarda ne yapılabilir?

  1. Harici başlıklar değiştirilemez. Yerel kopyanın yapım süresinde eklenmesi son çare olarak kabul edilebilir.
  2. Sorunlu üstbilgi yaygın olarak kullanılmaktadır.
  3. -Werror Sonunda yapı anda yama seçmiş bizim kod
+0

kodunu gir ve memba yazara test yama ile bir değişiklik isteği göndermek:

execute_process(COMMAND "patch" "-N" "header_to_patch.h" "header_to_patch.h.patch")

Yama dosyası ile hazırlanmıştır . –

+0

Yama, yalnızca açık kaynaklı bağımlılıklar için uygun bir çözümdür. Tescilli harici kütüphane için imkansız. Nihayet cmake 'execute_process (COMMAND" yaması "" -N "...) ile oluşturma zamanında yama yapmayı seçtik –

cevap

0

için açıktır. Bu biraz hacky ama projemizi sağlam bırakmaya izin veriyor.

Yama cmake yapı eklendi:

diff -u "original/header_to_patch.h" "fixed/header_to_patch.h" > header_to_patch.h.patch