[Insight-users] ITK4 VCL Compilation with Visual studio 2011 Developer Preview, VC11

Jan Margeta jmargeta at gmail.com
Sat Dec 10 13:16:29 EST 2011


Hi Matt,

Thanks a lot for your reply. I am now quite convinced that the xkeycheck.h
file is used solely
by the C++ preprocessor which tests if any of the reserved words were
redefined.

the failing part of xkeycheck.h looks like this:

#if defined(alignas)    /* check C++ keywords */ \
    || defined(alignof) \
    || defined(asm) \
    || defined(auto) \
    || defined(bool) \
    ....
    || defined(enum) \
    || defined(explicit) \
*    || defined(export) \*
    || defined(extern) \
    ...
    || defined(friend) \
    ...
    || defined(while)
   #error keyword defined before including C++ standard header
  #endif /* defined... */


After a bit of bisectionning of the list (of 72 items), I found the culprit.

Despite the failure of (in *
....\ITK\src\Modules\ThirdParty\VNL\src\vxl\config\cmake\config\CMakeLists.txt
* line 53)
PERFORM_CMAKE_TEST(vxl_platform_tests.cxx VCL_HAS_EXPORT)

it is keyword *"export" that* the preprocessor protects (see *vcl_compiler.h
* line 283*):

//* if the compiler doesn't understand "export", we just leave it out.
// gcc and SunPro 5.0 understand it, but they ignore it noisily.
#if
!VCL_HAS_EXPORT||defined(VCL_EGCS)||defined(VCL_GCC_295)||defined(VCL_GCC_3)||defined(VCL_GCC_4)||defined(VCL_SUNPRO_CC_5)
# define export /* ignore */
#endif


A dirty hack that worked for me was to change the definition to* "__export*"
#if
!VCL_HAS_EXPORT||defined(VCL_EGCS)||defined(VCL_GCC_295)||defined(VCL_GCC_3)||defined(VCL_GCC_4)||defined(VCL_SUNPRO_CC_5)
# define __export /* ignore */
#endif
#if VCL_HAS_EXPORT
# define __export export
#endif

and replace all used exports by __export in
*...\ITK\src\Modules\ThirdParty\VNL\src\vxl\core\vnl\vnl_diag_matrix.h
...**
\ITK\src\Modules\ThirdParty\VNL\src\vxl\core\vnl\vnl_diag_matrix_fixed.h
...**\ITK\src\Modules\ThirdParty\VNL\src\vxl\core\vnl\vnl_sym_matrix.h*

Here you can find the proposed patches that helped me to compile ITK4 with
VC11:
http://review.source.kitware.com/3478
http://review.source.kitware.com/3479

Cheers,

Jan


*

*
On Fri, Dec 9, 2011 at 8:26 PM, Matt McCormick
<matt.mccormick at kitware.com>wrote:

> Hi Jan,
>
> I do not believe we have any dashboard builds of VC11.
>
> Can you please report the content of the file xkeycheck.h around line 124?
>
> Thanks,
> Matt
>
> On Fri, Dec 9, 2011 at 8:31 AM, Jan Margeta <jmargeta at gmail.com> wrote:
> > Hi all ITK users,
> >
> > When compiling project itkvcl (amon many others) I get errors from
> > xkeycheck.h
> >
> > ...
> > 2>C:\Program Files (x86)\Microsoft Visual Studio
> > 11.0\VC\include\xkeycheck.h(124): fatal error C1189: #error :  keyword
> > defined before including C++ standard header
> > 2>  vcl_cmath.cxx
> > 2>C:\Program Files (x86)\Microsoft Visual Studio
> > 11.0\VC\include\xkeycheck.h(124): fatal error C1189: #error :  keyword
> > defined before including C++ standard header
> > 2>  vcl_cassert.cxx
> > ...
> >
> > From the content of this file, I would guess that some extra #define
> > redefinition of an existing keyword is used somewhere.
> > Has anyone tackled this and fully compiled ITK4 on VC11?
> >
> > Cheers,
> >
> > Jan
> >
> >
> >
> > _____________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Kitware offers ITK Training Courses, for more information visit:
> > http://www.kitware.com/products/protraining.html
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.itk.org/mailman/listinfo/insight-users
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20111210/aa71d8e2/attachment.htm>


More information about the Insight-users mailing list