[CMake] FindIce module and C++11

Roger Leigh rleigh at codelibre.net
Fri Aug 11 20:31:29 EDT 2017


On 11/08/17 20:15, Rolf Eike Beer wrote:
> Am Donnerstag, 10. August 2017, 10:28:31 schrieb rleigh at codelibre.net:
>> On 2017-08-10 09:50, Jones J.W. wrote:
>>> I'm building my code on Linux using the g++ flags "-std=c++11". This
>>> means that I must link with the libIce++11 libraries instead of
>>> libIce.
>>>
>>> The FindIce module, however as no provision for choosing these
>>> libraries thus resulting in unresolved symbols at link time.
>>>
>>> I tried getting around the problem by simply listing Ice++11 as a
>>> COMPONENT which works in Linux but the same CMakeLists.txt file in
>>> Windows won't work as there is no Ice++11. Currently I have resolved
>>> this by having two calls to the FindIce module inside an IF( MSVC )
>>> conditional.
>>>
>>> Would it be possible to add a flag to tell the FindIce module whether
>>> C++11 is being used or not?
>>
>> FindIce certainly needs an update for Ice 3.7.
> 
> To me this smells like an imported target with a generator expression that
> uses the C++11 or other lib depending on the used interface of the target. No
> idea if that is possible, but that would be the direction I would search in.

I'm unsure, but I suspect it's not appropriate.  I'm currently treating 
them as separate libraries because whether C++11 is used by the compiler 
is orthogonal to whether you're using the C++11 Ice API (and code 
generator).  Ice generates language-specific interfaces and 
implementations from abstract definitions, and it treats C++ and C++11 
as essentially different languages.  You need to explicitly opt into 
using C++11 in the interface definitions for code generation, and with 
respect to which libraries you link to.

For anyone using Ice who would like to test, I've opened
   https://gitlab.kitware.com/cmake/cmake/merge_requests/1137for testing 
and review.  Would be helpful if anyone wanting to use Ice 3.7 could 
give it a try, but equally if you're using 3.[3456] it would be great to 
know if there are any regressions.  I'll be testing Ice 3.5, but no 
longer have any of the others lying around (3.3 can probably be removed, 
it's so old and unsupported).


Regards,
Roger


More information about the CMake mailing list