プロジェクトのコンパイルにグローバルなフラグ セットを使用したいと考えています。つまり、最上位の CMakeLists.txt ファイルで次のように指定しました。
ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x )
ただし、サブディレクトリ内の特定のファイル (「foo.cpp」としましょう) については、コンパイル フラグを切り替えて -Weffc++ (変更できない商用ライブラリが含まれています) を適用しないようにしたいと考えています。-Wall のみを使用する状況を単純化するために、次のことを試しました。
SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
、うまくいきませんでした。私も試しました
SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
と
ADD_EXECUTABLE( foo foo.cpp )
SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall )
、どちらも機能しませんでした。
最後に、この定義を削除してみました:
REMOVE_DEFINITIONS( -Weffc++ )
ADD_EXECUTABLE( foo foo.cpp )
ADD_DEFINITIONS( -Weffc++ )
、これも機能しませんでした (つまり、商用ライブラリに関する多くのスタイル警告が表示されます)。(**注: 実行可能ファイルのビルド後に -Weffc++ ディレクティブを再インクルードしないと、警告は抑制されます。)
また、コンパイル フラグを一時的に削除しようとしました: http://www.cmake.org/pipermail/cmake/2007-June/014614.html 、しかしそれは役に立ちませんでした。
これに対するエレガントな解決策はありませんか?