[CMake] cmake 2.8.6 On Linux , link error and added headers to ..._EXTERNAL_OBJECTS for executables

Michael Hertling mhertling at online.de
Wed Nov 16 04:43:03 EST 2011


On 11/15/2011 06:04 PM, Bill Hoffman wrote:
> On 11/15/2011 11:52 AM, Michael Hertling wrote:
> 
>> Could you boild down this issue to a minimal and self-sufficient example
>> - i.e. a project working with 2.6 (quite old) but failing with 2.8 - and
>> post it here for further investigation?
>>
> There was a bug created for this, and the problem found.  The cmake code 
> was marking the .h file as an object file.  Must have been a bug fix in 
> CMake that allowed the .h to be treated as an object file.
> 
> See here for information:
> http://public.kitware.com/Bug/view.php?id=12575

Hi Bill,

many thanks for this hint. Perhaps, I might take the opportunity
and ask a related question. In [1], I noted that a file declared
as EXTERNAL_OBJECT is delivered to the linker only if it has a
name extension mentioned in CMAKE_<LANG>_IGNORE_EXTENSIONS, and
this variable isn't accessible to the user. IMO, this is wrong;
instead, EXTERNAL_OBJECT files should be supplied to the linker
regardless of their name extensions, i.e. the relevant blocks
within cmMakefileTargetGenerator::WriteTargetBuildRules() from
Source/cmMakefileTargetGenerator.cxx should be swapped. That's
also what the user expects from the EXTERNAL_OBJECT property's
documention, as the limitation to the ignored extensions isn't
mentioned. Is there a reason why this restriction is applied?

Regards,

Michael

[1] http://www.mail-archive.com/cmake@cmake.org/msg37231.html


More information about the CMake mailing list