[CMake] Possible to modify COMPILE_FLAGS?

2011-10-25 Thread Campbell Barton
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?

-- 
- 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


Re: [CMake] Possible to modify COMPILE_FLAGS?

2011-10-25 Thread Michael Wild
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


Re: [CMake] Possible to modify COMPILE_FLAGS?

2011-10-25 Thread Campbell Barton
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 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


Re: [CMake] Possible to modify COMPILE_FLAGS?

2011-10-25 Thread David Cole
On Tue, Oct 25, 2011 at 8:58 PM, Campbell Barton ideasma...@gmail.comwrote:

 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 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
--

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

Re: [CMake] Possible to modify COMPILE_FLAGS?

2011-10-25 Thread Michael Wild
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