On 10/26/2011 03:56 AM, David Cole wrote: > On Tue, Oct 25, 2011 at 8:58 PM, Campbell Barton <ideasma...@gmail.com > <mailto:ideasma...@gmail.com>> wrote: > > Thanks for that, from reading the docs now this is more clear but for > some reason I had the impression the flags on a file could be > manipulated. > > # --- > # Heres the macro I came up with to disable certain warnings for a > given set of files... > > macro(remove_strict_flags_file > filenames) > > foreach(_SOURCE ${ARGV}) > > if(CMAKE_COMPILER_IS_GNUCC) > set_source_files_properties(${_SOURCE} > PROPERTIES > COMPILE_FLAGS > "-Wno-deprecated-declarations" > ) > endif() > > if(MSVC) > # TODO > endif() > > endforeach() > > unset(_SOURCE) > > endmacro() > > # --- > # Example use > > remove_strict_flags_file( > intern/indexer.c > intern/util.c > intern/anim_movie.c > ) > > > > On Tue, Oct 25, 2011 at 7:16 PM, Michael Wild <them...@gmail.com > <mailto:them...@gmail.com>> wrote: > > On 10/25/2011 09:51 AM, Campbell Barton wrote: > >> The problem I'm trying to solve is to have "-Werror" for the whole > >> project except a few files which include system headers that give > >> warnings we can't workaround (even with -isystem). > >> > >> So I'm trying to get cmake to replace some flags for a specific file, > >> and I ran into the problem that the variable appears not to be set. > >> > >> get_source_file_property(MYVAR intern/BME_Customdata.c COMPILE_FLAGS) > >> ... modify the MYVAR > >> ... set the flags back > >> > >> But the variable isnt set, Im sure the source file is valid because I > >> printed it from the list passed to the target, and I tried this > before > >> and after defining the source file in the target: > >> message(FATAL_ERROR "Check: ${MYVAR}") > >> Check: NOTFOUND > >> > >> > >> I'm guessing the COMPILE_FLAGS property can be set which > overrides the > >> default flags but is there a good way to manipulate the existing > >> flags? > >> > > > > Problem is, that the COMPILE_FLAGS property only *appends* to the > > default compile flags. You'll have to remove -Werror from > > CMAKE_<LANG>_FLAGS[_<CONFIG>] variables and set it instead on all the > > files you want it to be set for. > > > > Michael > > -- > > > > Powered by www.kitware.com <http://www.kitware.com> > > > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > > > Follow this link to subscribe/unsubscribe: > > http://www.cmake.org/mailman/listinfo/cmake > > > > > > -- > - Campbell > -- > > Powered by www.kitware.com <http://www.kitware.com> > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Follow this link to subscribe/unsubscribe: > http://www.cmake.org/mailman/listinfo/cmake > > > The flags on a file CAN be manipulated, but Michael's point was that the > flags on a file are ADDED to the global flags and the flags on its > containing target... > > So there's no reliable way to set file flags that will remove flags that > were already added by the global or target level flags. > > > HTH, > David >
Actually, I just found out, that in the special case of CMAKE_COMPILER_IS_GNUCC{,XX} and the -WXXX settings, you actually can effectively remove them for individual files, targets or directories by setting the COMPILE_FLAGS property to -Wno-XXX. In above case, -Werror will still be passed on the command line, but it will be overridden by -Wno-error that comes later on. HTH Michael -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake