On Jun 26, 2011, at 7:12 AM, Owen Shepherd wrote:

> On 25/06/2011 07:30, "Michael Hertling" <mhertl...@online.de> wrote:
> 
>> On 06/24/2011 04:16 PM, Owen Shepherd wrote:
>>> I think the appropriate solution here is a project-specific dialect
>>> flag -
>>> perhaps one taking options in the GNU format since it seems most
>>> familiar.
>>> One could perhaps generalise this further - a file-specific dialect flag
>>> which defaults to the value of the project-specific flag
>> 
>> If there are individual compilers for C89/C99, and a projects needs a
>> C99 one, any dialect flags - project/directory/target/file specific -
>> would be of no use, wouldn't they? Rather, one must specify the C99
>> compiler if it isn't found automatically by CMake during the initial
>> configuration, and the project might consider to check the compiler's
>> C99 capabilities.
> 
> Sorry - I should have said property rather than flag. That is, something
> along the lines of
>       set_target_properties(the_target PROPERTIES C_DIALECT C99)
> Or
>       set_source_files_properties(myfile.c PROPERTIES C_DIALECT C99)
> 
> (I'm not entirely sure here whether the source file property should be
> C_DIALECT or just DIALECT. The language, after all, should be unambiguous
> at this point)
> 
> It would then be the responsibility of the Cmake machinery to choose the
> right compiler and set it up for building code with the given dialect.

I *think* Michael's concern here is that if you have a project that uses C99, 
it should fail as fast as possible, e.g. when it knows that the 
detected/provided compiler does not support C99 as it processes the 'project' 
command at the beginning of the CMakeLists.txt file.

I think it would be acceptable if things failed later than that.  e.g., you 
could have:

> project(foo C CXX)

Suppose a C89-only compiler is detected.  The build now knows that's the only 
dialect it supports.  It should fail when it sees this later:

>       set_target_properties(the_target PROPERTIES C_DIALECT C99)

If, however, there is a C99 file that does NOT have such a property set on it, 
I don't think there is anything you can do about that.  Here, the build would 
just fail when it tries to compile that file.  I think the right behavior is to 
keep the current behavior for files/targets/projects that do not have dialect 
properties set on them.

-Todd





> 
> -- Owen Shepherd
> http://www.owenshepherd.net
> owen.sheph...@e43.eu (general) / oshephe...@shef.ac.uk (academic)
> 
> 
> 
> 
> _______________________________________________
> 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

______________________________________________________________________
Todd Gamblin, tgamb...@llnl.gov, http://people.llnl.gov/gamblin2
CASC @ Lawrence Livermore National Laboratory, Livermore, CA, USA

_______________________________________________
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

Reply via email to