[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