2012-08-16 65 views
3

我正在研究一個依賴於其他一些庫(特別是SFML和Box2D以及其他一些庫)的項目。我喜歡用我的警告運行起來,但我依賴的項目並不嚴格。我可以使用CMake編譯我的項目的不同部分,並提供不同的警告級別嗎?

有沒有一種方法可以用默認的警告設置編譯庫,並用我想要的警告標誌編譯我的代碼?我在CMakeLists.txt中有以下標誌列表。註釋掉的行是我現在無法打開的東西,因爲它們打破了我的依賴關係。

set(CUSTOM_CFLAGS ${CUSTON_CFLAGS} 
    -std=c++0x 
    #-ansi 
    -pedantic 
    -Werror 
    -Wall 
    -Wextra 
    #-Weffc++ 
    -Wshadow 
    -Winit-self 
    -Wsign-promo 
    -Wcast-align 
    #-Wlogical-op 
    -Woverloaded-virtual 
    -Wno-unused-parameter 
    #-Wstrict-null-sentinel 
    -Wmissing-include-dirs 
    -Wframe-larger-than=8192 
    #-Wmissing-format-attribute 
    -g 
    #Would like this but Box2D hsa a ridiculous amount of it... 
    #-Wfloat-equal -Wno-error=float-equal 
    ) 

回答

1

是的,您可以編譯一次外部庫。然後,您可以將它們包含並鏈接到您的項目中,而無需重新編譯外部內容。重新編譯的唯一剩餘外部代碼位於庫頭文件中。寫一些類似於

#pragma warning(push) 
#pragma warning(disable:2892,2893,2894,4096) 
#include <external_header.h> 
#pragma warning(pop) 

爲了禁用彈出在外部頭文件中的警告。這個編譯指示的東西不同於編譯器和編譯器,但大多數編譯器都有這些內容。

相關問題