プロジェクトをコンパイルするためにフラグのグローバルセットを使用したいと思います。つまり、最上位の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 、それは助けにはなりませんでした。
これに対するエレガントな解決策はありませんか?