I get the following error when doing a superbuild:

[ 15%] Building CXX object
Utilities/vtkmetaio/CMakeFiles/vtkmetaio.dir/metaUtils.cxx.o
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:
In function ‘bool vtkmetaio::MET_StringToWordArray(const char*, int*,
char***)’:
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:805:3:
*error: ‘ptrdiff_t’ was not declared in this scope*
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:805:3:
note: suggested alternatives:
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h:156:28: note:
‘std::ptrdiff_t’
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h:156:28: note:
‘std::ptrdiff_t’
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:805:13:
error: expected ‘;’ before ‘l’
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:807:13:
error: expected ‘;’ before ‘p’
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:808:9:
error: ‘p’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:808:11:
error: ‘l’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:814:13:
error: expected ‘;’ before ‘pp’
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:816:9:
error: ‘pp’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:816:12:
error: ‘l’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:829:3:
error: ‘pp’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:829:6:
error: ‘l’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:845:13:
error: expected ‘;’ before ‘i’
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:846:7:
error: ‘i’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:848:8:
error: ‘p’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:854:11:
error: ‘p’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:858:5:
error: ‘j’ was not declared in this scope
/home/de066732/dev/MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx:859:11:
error: ‘p’ was not declared in this scope
make[5]: *** [Utilities/vtkmetaio/CMakeFiles/vtkmetaio.dir/metaUtils.cxx.o]
Error 1
make[4]: *** [Utilities/vtkmetaio/CMakeFiles/vtkmetaio.dir/all] Error 2
make[3]: *** [all] Error 2
make[2]: *** [CMakeExternals/Stamp/VTK/VTK-build] Error 2
make[1]: *** [CMakeFiles/VTK.dir/all] Error 2
make: *** [all] Error 2

I fixed the problem by fully qualifying the 4 instances of ptrdiff_t with
std:: namespace (see attached patch). Has anybody else run into this issue?
Would it make sense to include a VTK patch for this in the superbuild? I'm
on Ubuntu 11.10 with gcc-4.6, cmake-2.8.5, qt-4.7.4.

Also, in the process of researching this issue, I discovered that the build
requirements page is quite out of date:

http://www.mitk.org/wiki/Build_requirements

Taylor
--- MITK-superbuild.orig/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx	2010-09-27 16:40:10.000000000 -0400
+++ MITK-superbuild/CMakeExternals/Source/VTK/Utilities/vtkmetaio/metaUtils.cxx	2011-12-13 08:36:58.064257734 -0500
@@ -802,16 +802,16 @@
 //
 bool MET_StringToWordArray(const char *s, int *n, char ***val)
 {
-  ptrdiff_t l = strlen(s);
+  std::ptrdiff_t l = strlen(s);
 
-  ptrdiff_t p = 0;
+  std::ptrdiff_t p = 0;
   while(p<l && s[p] == ' ')
     {
     p++;
     }
 
   *n = 0;
-  ptrdiff_t pp = p;
+  std::ptrdiff_t pp = p;
   bool space = false;
   while(pp<l)
     {
@@ -842,7 +842,7 @@
 
   *val = new char *[*n];
 
-  ptrdiff_t i, j;
+  std::ptrdiff_t i, j;
   for(i=0; i<*n; i++)
     {
     if(p == l)
------------------------------------------------------------------------------
Systems Optimization Self Assessment
Improve efficiency and utilization of IT resources. Drive out cost and 
improve service delivery. Take 5 minutes to use this Systems Optimization 
Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to