[CMake] Possible to modify COMPILE_FLAGS?

David Cole david.cole at kitware.com
Tue Oct 25 21:56:25 EDT 2011


On Tue, Oct 25, 2011 at 8:58 PM, Campbell Barton <ideasman42 at 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 <themiwi at 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
> >
> > 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
>
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20111025/77484dfb/attachment-0001.htm>


More information about the CMake mailing list