Page MenuHomePhabricator

Support modern CMake and C++11 features
Closed, ResolvedPublic

Assigned To
None
Authored By
zelzer
Jan 9 2015, 4:18 PM
Referenced Files
F1205: AppleClang-5.0.0.5000279.txt
Mar 30 2015, 10:01 AM
F1204: Clang-3.4.0.txt
Mar 29 2015, 3:19 PM
F1203: CXXCompileFeatures.tar.gz
Mar 29 2015, 2:56 PM
F1202: dump.txt
Jan 30 2015, 1:49 PM
F1201: dump.txt
Jan 29 2015, 2:32 PM

Related Objects

Event Timeline

zelzer added a subscriber: zelzer.

This is a "meta bug" integrating the changes from Marco, Stefan and myself with respect to CMake, C++11 and external project updates.

I will branch off from the current MITK master and start integrating the existing branches.

User zelzer has pushed new remote branch:

bug-18605-modern-cmake-and-c++11

Windows 7 x64, MSVC 2012, Qt 4.8.5, Release

I have lots of errors regarding _configtest which seems to be related to Numpy.

GL/freeglut.h cannot be found be the freeglut project itself (it seems that the include files are supposed to be copied to a global include directory, in which the glew headers *are* present for example.

A folder named "registry" was created OUTSIDE of the superbuild folder. It seems to be Python-related, i.e., its contents are registry/Lib/site-packages/cy.py and cv2.pyd.

A dump of all error messages.

I also tried to compile with Qt 5.2.1 (Python disabled, also SOFA because of freeglut):

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindBoost.cmake:1182 (message):
23> Unable to find the requested Boost libraries.
23>
23> Boost version: 1.56.0
23>
23> Boost include path: D:/MITK-superbuild-qt5/ep/include
23>
23> Could not find the following Boost libraries:
23>
23> boost_system
23> boost_thread
23> boost_chrono
23>
23> No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
23> directory containing Boost libraries or BOOST_ROOT to the location of
23> Boost.
23> Call Stack (most recent call first):
23> CMake/PackageDepends/MITK_Boost_Config.cmake:17 (find_package)
23> CMake/mitkFunctionUseModules.cmake:101 (include)
23> CMake/mitkFunctionUseModules.cmake:175 (_include_package_config)
23> CMake/mitkFunctionCreateModule.cmake:511 (mitk_use_modules)
23> Modules/DiffusionImaging/DiffusionCore/CMakeLists.txt:6 (MITK_CREATE_MODULE)

Boost is built as x86 libraries with MSVC 2012 although it is supposed to be x64.

Errors mainly regarding mitkITKImageImport.txx and one Simulation module related build script bug.

In CMakeLists.txt of Simulation module, a generator expression was introduced[1], which leads to:

6>cl : Command line error D8021: invalid numeric argument '/wd4068 /wd4250 /wd4251 /wd4267 /wd4275'

[1] target_compile_options(${MODULE_TARGET} PRIVATE "$<$<CXX_COMPILER_ID:MSVC>:/wd4068 /wd4250 /wd4251 /wd4267 /wd4275>")

The Boost and compile definition issues from above are fixed now. There's a linker error in the Simulation module though:

1>LINK : fatal error LNK1104: cannot open file 'libboost_chrono-vc110-mt-1_56.lib'

The true file name of this lib is boost_chrono-mt.lib. I guess the linux naming scheme was mixed in here due to the prefix lib.

With MSVC 2013, ITK fails to build because of the same errors as in the error dump above:

error C2491: 'itk::MetaDataObject<MetaDataObjectType>::MetaDataObject' : definition of dllimport function not allowed

This is due to the missing compile definition ITKCommon_EXPORTS which results in the wrong evaluation of ITKCommon_EXPORT (declspec(dllimport) instaed of declspec(dllexport)).

@Sascha The export macro is patched into itkMetaDataObject.h by us. Without the patch it is working. Do you know why this is "patched"?

If testing is deactivated, our CMake script fails in Core/tests/CMakeLists.txt:

CMake Error at CMake/mitkFunctionUseModules.cmake:136 (message):
16> Required TARGET argument missing.
16> Call Stack (most recent call first):
16> Modules/Core/tests/CMakeLists.txt:12 (mitk_use_modules)
16>
16>
16> CMake Error at CMake/mitkFunctionUseModules.cmake:182 (target_include_directories):
16> Cannot specify include directories for target "SYSTEM" which is not built
16> by this project.
16> Call Stack (most recent call first):
16> Modules/Core/tests/CMakeLists.txt:12 (mitk_use_modules)
16>
16>
16> CMake Error at CMake/mitkFunctionUseModules.cmake:185 (target_link_libraries):
16> Cannot specify link libraries for target "PRIVATE" which is not built by
16> this project.
16> Call Stack (most recent call first):
16> Modules/Core/tests/CMakeLists.txt:12 (mitk_use_modules)

The line causing this errors is:

mitk_use_modules(TARGET ${TESTDRIVER} PACKAGES ITK|ITKThresholding+ITKTestKernel VTK|vtkTestingRendering tinyxml)

I guess the ${TESTDRIVER} variable is not defined if testing is disabled.

Fixed by checking for testdriver target.
Patch removal not committed yet until it is clear why it was added.

(In reply to Stefan Kislinskiy from comment #12)

@Sascha The export macro is patched into itkMetaDataObject.h by us. Without
the patch it is working. Do you know why this is "patched"?

This fixed a dynamic_cast problem with ITK classes on MacOS. It is obviously not a proper fix because it leads to errors on Windows. I still need to check with the ITK guys how to proceed best.

Okay, thanks.

Here's a tricky one... MitkAlgorithmsExt has a linker error (unresolved external symbol):

declspec(dllimport) public: static class itk::SmartPointer<class mitk::GenericProperty<bool> > cdecl mitk::GenericProperty<bool>::New(bool)"

which is triggered by a call to NonBlockingAlgorithm::SetParameter() which is a template method setting a GenericProperty<T>. MitkAlgorithmsExt has a dependency to MitkCore and MitkCore exports both BoolProperty stuff as well as GenericProperty<bool> stuff (checked with DependencyWalker). Bool, because that's what the SetParameter() method is doing in this case, all other GenericProperties are exported as well.

Oh, only the static New methods of classes GenericProperty<DicomSeriesReader::PixelSpacingInterpretation> and GenericProperty<DicomSeriesReader::ReaderImplementationLevel> are exported.

Hm, not sure if it is even correct to use GenericProperty that way. It is not meant to be directly constructed. There's always a subclass which supplies a correct GetNameOfClass(), e.g., GenericProperty<bool> should be constructed via BoolProperty::New(). But this would mean that there must be some kind of factory for generic creation of properties.

That also means that the two New() methods mentioned in the comment above should be removed. They are used this way in mitkDicomSeriesReader.cpp, 1421 and 1423, for example.

The *bad* quick fix would be to add the following line to the mitkDeclareGenericProperty macro at the beginning:

template Export class GenericProperty< Type >; \

I checked all CMake variables regarding the boost library name issue and double checked the values in the Property Pages of the project in Visual Studio. Everything correct yet if fails when the project is linked. I searched for the string "chrono-vc110" in the whole build tree to see were these wrong names come from but they only appear in the .obj files of the Simulation module, e.g.:

/DEFAULTLIB:"libboost_chrono-vc110-mt-1_56.lib" /DEFAULTLIB:"libboost_system-vc110-mt-1_56.lib"

Could the SOFA headers contain a pragma command for implicitly linking to the boost library?

#pragma comment(libboost_chrono-vc110-mt-1_56.lib, ...)

No, they don't have pragmas like that. Especially they do not need chrono at all, that is a sole requirement of my module because I need highres timers.

I currently test the branch with MSVC 2013. SOFA fails because it cannot link to freeglut. It looks for freeglut.lib but it is supposed to use freeglutd.lib in debug mode.

When I compare GLEWConfig.cmake with GLUTConfig.cmake, the error lies in the latter one as only GLUTTargets.cmake is included but not GLUTTargets-debug.cmake.

[d7edad]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-05 19:16:59 Sascha Zelzer [c0ca25]
Fixed resource path for unit test.


2015-02-05 19:13:13 Sascha Zelzer [8ecd7b]
Optimize dependency checking by removing duplicates.


2015-02-05 16:53:54 Stefan Kislinskiy [5a01f8]
Link Boost dynamically.


2015-02-05 02:27:22 Sascha Zelzer [808a19]
Install OpenIGTLink and fix CMAKE_DEBUG_POSTFIX handling.


2015-02-05 02:26:23 Sascha Zelzer [740688]
Merge remote-tracking branch 'origin/master' into bug-18605-modern-cmake-and-c++11

Conflicts:
Applications/PluginGenerator/ProjectTemplate/CMakeExternals/MITK.cmake
CMake/MITKDashboardScript.TEMPLATE.cmake
CMake/mitkFunctionGetLibrarySearchPaths.cmake
CMakeLists.txt
Core/Code/Algorithms/mitkSurfaceToSurfaceFilter.h
Core/Code/DataManagement/mitkSurface.h
Core/Code/IO/mitkAbstractFileIO.h
Core/Code/IO/mitkAbstractFileReader.cpp
Core/Code/IO/mitkIOUtil.h
Core/Code/IO/mitkItkImageIO.cpp
Core/Code/IO/mitkItkImageIO.h
Core/Code/IO/mitkMimeType.h
Core/Code/Internal/mitkCoreActivator.cpp
Core/Code/Internal/mitkItkImageIO.cpp
Core/Code/Internal/mitkItkImageIO.h
Core/Code/files.cmake
MITKConfig.cmake.in
Modules/Core/src/IO/mitkItkImageIO.cpp
Modules/Core/src/IO/mitkItkImageIO.h
Modules/DicomRT/mitkRTDoseReader.cpp
Modules/DiffusionImaging/DiffusionIO/mitkDiffusionIOMimeTypes.h
Modules/DiffusionImaging/FiberTracking/IODataStructures/FiberBundle/mitkFiberBundle.h
Modules/DiffusionImaging/FiberTracking/IODataStructures/FiberBundle/mitkFiberBundleThreadMonitor.h
Modules/DiffusionImaging/FiberTracking/Rendering/mitkFiberBundleThreadMonitorMapper3D.h
Modules/PlanarFigure/CMakeLists.txt
Plugins/org.mitk.gui.qt.diffusionimaging/src/internal/QmitkFiberfoxView.h
SuperBuild.cmake


2015-02-04 21:27:13 Sascha Zelzer [ad8705]
Changed more modules to use the new directory layout.


2015-02-04 20:19:46 Stefan Kislinskiy [6891ee]
Prevented linking via pragma comment.


2015-02-04 19:40:01 Stefan Kislinskiy [a178f9]
Move boost lib files to lib directory for Windows.


2015-02-04 18:32:32 Sascha Zelzer [e8a139]
Also check transitive external project dependencies.


2015-02-04 16:45:33 Sascha Zelzer [e5e3b7]
Use cache variables to help find_path() calls.


2015-02-04 10:48:42 Sascha Zelzer [afce5f]
Fix up header file locations.


2015-02-04 10:48:19 Sascha Zelzer [52c807]
Use correct public dependency.


2015-02-04 10:47:10 Sascha Zelzer [5261db]
Call find_package for all external projects.

We now call find_package() in the top-level CMakeLists.txt and the
MITKConfig.cmake file for all external projects where MITK_USE_<ep>
is set to ON. This ensures that all external targets are imported
and transitive dependencies can be resolved properly.


2015-02-02 20:01:16 Sascha Zelzer [53d1a5]
New directory layout for DICOM modules.


2015-02-02 19:29:28 Sascha Zelzer [74e620]
New directory layout for DataTypesExt module.


2015-02-02 19:29:08 Sascha Zelzer [edda1c]
Use singular for "resource" sub-directories.


2015-02-02 19:18:15 Sascha Zelzer [7c7c12]
New directory layout for AlgorithmsExt.


2015-02-02 17:39:40 Sascha Zelzer [c2cacf]
Use singular for test sub-directory.


2015-02-02 16:52:43 Sascha Zelzer [cbff3b]
Removed / split the mitkSetupVariables.cmake file.


2015-02-02 17:40:29 Stefan Kislinskiy [5cdf3d]
Do not set tagged layout on Windows.


2015-02-02 17:38:01 Stefan Kislinskiy [ace53a]
Use correct export macro for GenericProperty.


2015-02-02 16:46:01 Stefan Kislinskiy [bb3d56]
Fixed C comment parse errors.


2015-02-02 16:30:11 Sascha Zelzer [14aef0]
Fixed Clang error when implicitly converting arguments.


2015-02-02 16:29:40 Sascha Zelzer [78d706]
Avoid moc errors when parsing Boost header files.


2015-02-02 16:29:25 Sascha Zelzer [baf079]
Reintroduced MITK_EXPORT macro for exporting template RTTI symbols.


2015-02-02 14:39:01 Sascha Zelzer [fe0909]
Don't use hidden visibility with Clang.


2015-02-02 14:18:12 Stefan Kislinskiy [b16607]
Moved testdriver target checks after MITK_CREATE_MODULE_TESTS macro calls.


2015-02-02 14:00:23 Stefan Kislinskiy [2884ee]
Remove ITKCommon_EXPORT patch.


2015-02-02 10:08:11 Stefan Kislinskiy [f98915]
Check for testdriver target.


2015-01-30 16:09:11 Stefan Kislinskiy [56a692]
Fixed target compile option format of Simulation module.


2015-01-30 12:52:47 Stefan Kislinskiy [cf969c]
Consider address model to build Boost with correct architecture.


2015-01-29 18:52:06 Sascha Zelzer [6f7bf7]
Fixed typo.


2015-01-29 18:48:27 Sascha Zelzer [daa2f5]
Don't hide RTTI symbols of itkMetaDataObject instantiations.

Without the export macro, dynamic_cast calls between MetaDataBase and
derived itkMetaDataObject<> classes fail on AppleClang using a
C++11 runtime.


2015-01-29 18:46:12 Sascha Zelzer [b01162]
Don't overwrite our @rpath/<name> install name with lib/<name>.


2015-01-29 18:45:37 Sascha Zelzer [7ac778]
Fixed unused parameter error.


2015-01-29 16:25:06 Stefan Kislinskiy [752fa5]
Do not require CXX_STANDARD if MSVC is defined.


2015-01-29 16:12:58 Stefan Kislinskiy [aff648]
Fixed Boost library lookup.


2015-01-29 16:09:26 Stefan Kislinskiy [0a0f4e]
Quoted generator expressions.


2015-01-29 03:30:33 Sascha Zelzer [a3724a]
Specify Boost install libdir for Windows.


2015-01-29 03:30:08 Sascha Zelzer [ec6ce6]
First test for APPLE, since MacOS also qualifies as UNIX.


2015-01-29 02:58:21 Sascha Zelzer [52b8be]
Moved global CMake variable definitions.


2015-01-29 02:57:51 Sascha Zelzer [20cf99]
Explicitly mention the install prefix for Windows.


2015-01-29 02:30:09 Sascha Zelzer [8843bb]
Simplify Boost build by using an in-source build configuration.


2015-01-29 02:10:56 Sascha Zelzer [6280e3]
Fixed "unused parameter" error in release mode.


2015-01-29 02:10:30 Sascha Zelzer [6d2659]
Fixed install_name and rpath handling on MacOS.


2015-01-29 02:10:00 Sascha Zelzer [a0a5c5]
Explicitly list Boost libraries in the build command.


2015-01-28 15:25:49 Marco Nolden [605e5b]
Fix for DCMTK build with empty CMAKE_DEBUG_POSTFIX


2015-01-28 14:53:56 Marco Nolden [afa445]
Fixed temporary CTK git url


2015-01-28 13:48:42 Marco Nolden [a92fdc]
Fixed target_link_libraries style for Core


2015-01-28 03:35:55 Sascha Zelzer [bb6dbf]
Simplified dependency handling of auto-load modules.

Executables now get a dependnecy on all auto-load modules instead
of just those auto-load modules which are associated with linker
dependencies of that executable. This will potentially build more
modules than required but we cannot retrieve the transitive link
dependencies from a target to derive the required auto-load modules
from them.


2015-01-28 03:17:11 Sascha Zelzer [935c04]
Use new CMake project(... VERSION ...) command.


2015-01-28 03:16:44 Sascha Zelzer [691cec]
Fixed make install issues and use lib subdir on Unix.


2015-01-28 03:15:02 Sascha Zelzer [5a3c27]
Fixed issues with CMAKE_DEBUG_POSTFIX.


2015-01-26 00:48:26 Sascha Zelzer [8159dd]
Merge remote-tracking branch 'origin/master' into bug-18605-modern-cmake-and-c++11

Conflicts:
CMake/mitkFunctionGetLibrarySearchPaths.cmake
CMakeExternals/redland.cmake
Modules/AlgorithmsExt/mitkSegmentationSink.h
Modules/Core/include/mitkBaseGeometry.h
Modules/Core/include/mitkGeometry3D.h
Modules/Core/include/mitkPlaneGeometry.h
Modules/Core/include/mitkProperties.h
Modules/Core/include/mitkSlicedGeometry3D.h
Modules/Core/tests/mitkSurfaceVtkMapper2DColorTest.cpp
Modules/Core/tests/mitkSurfaceVtkMapper2DOpacityTest.cpp
Modules/Multilabel/mitkLabelSetImageSerializer.h
Modules/QtWidgets/QmitkRenderWindow.h
Modules/Segmentation/CMakeLists.txt
Modules/Simulation/CMakeLists.txt
Modules/Simulation/mitkSimulationGLMapper2D.h
Modules/Simulation/mitkSimulationIO.h
Modules/Simulation/mitkSimulationReader.h
Modules/Simulation/mitkSimulationWriter.h
Modules/Simulation/mitkVtkSimulationPolyDataMapper2D.h
Modules/SurfaceInterpolation/CMakeLists.txt


2015-01-25 22:38:50 Sascha Zelzer [47b174]
Use library debug postfix, C++11 switch and rpath for external projects.


2015-01-22 18:55:59 Sascha Zelzer [700d85]
Use a generic solution for rpath issues and install trees.


2015-01-22 19:00:36 Sascha Zelzer [87d571]
Fixed issues with debug builds and CMAKE_DEBUG_POSTFIX.


2015-01-22 11:21:01 Sascha Zelzer [d8cbba]
Use common module directory layout for MitkCore.


2015-01-22 02:20:59 Sascha Zelzer [8682ae]
Adapted Doxygen config to new Core and CppMicroServices locations.


2015-01-22 01:33:35 Sascha Zelzer [175b1d]
Removed old BlueBerry bundle generator code.


2015-01-22 11:23:31 Sascha Zelzer [4091a5]
Removed unused and deprecated build tools.


2015-01-22 01:29:00 Sascha Zelzer [f423a8]
Moved Core and CppMicroServices directories into the Modules directory.


2015-01-21 02:28:56 Sascha Zelzer [6454a2]
Started work on a "superbuild make install".


2015-01-21 02:28:26 Sascha Zelzer [ef000d]
Set a CMAKE_DEBUG_POSTFIX for all external projects.

This allows parallel debug and release installs.


2015-01-21 02:27:30 Sascha Zelzer [ec6f43]
Removed custom .vimrc file.


2015-01-21 02:26:35 Sascha Zelzer [1affa3]
Use original files from CMake 3.1.


2015-01-21 02:26:10 Sascha Zelzer [3a1c84]
Use check_cxx_compiler_flag which switches to the C locale before testing.


2015-01-21 02:32:37 Sascha Zelzer [e1f085]
Fixed more external projects to work with a common install prefix.


2015-01-16 17:15:07 Sascha Zelzer [dcdcec]
Use new super-build layout for SOFA.


2015-01-16 13:02:26 Sascha Zelzer [a30de9]
Start using a common super-build install prefix.


2015-01-20 19:15:47 Marco Nolden [543bed]
Fixed some BlueBerry Qt5 include issues


2015-01-20 14:13:45 Marco Nolden [efaf6c]
Fixed CppMicroServices C++11 std::functional detection


2015-01-20 14:12:46 Marco Nolden [e95382]
Adaptions to Qt5 modularization


2015-01-16 15:59:27 Andreas Fetzer [2947ea]
Deactivated cmake errors for wrong c++ version on Mac since CMake 3.1 does not how to handle AppleClang


2015-01-16 13:48:33 Sascha Zelzer [6ea3b0]
Conditionally use target_compile_features and check manually for C++11.


2015-01-16 13:01:55 Sascha Zelzer [2d9936]
Avoid double quotation marks in OpenCV patch.


2015-01-16 13:01:02 Sascha Zelzer [b46869]
Correct usage of $<PLATFORM_ID>.


2015-01-15 16:25:10 Sascha Zelzer [2e5200]
Updated tinyxml patch.


2015-01-15 00:40:44 Sascha Zelzer [489d7a]
Enable C++11 standard for all external projects


2015-01-14 13:56:55 Sascha Zelzer [77b22e]
Merge remote-tracking branch 'origin/bug-18549-cxx11' into bug-18605-modern-cmake-and-c++11

Conflicts:
CMakeExternals/ITK.cmake


2015-01-14 11:39:32 Sascha Zelzer [c4c025]
Ignore patches that seem to be already applied.

This was a try to avoid errors during the super-build when the
PATCH_COMMAND changed and CMake re-executes that step. The patch
program then fails applying the patch as the sources are already
patched. However, the patch program still reports an exit value
of 1, which aborts the super-build process.


2015-01-14 02:23:57 Sascha Zelzer [bddb8d]
Fixed issues with multiple ITK package dependencies and IO factories.


2015-01-13 23:45:46 Sascha Zelzer [3b7312]
Use consistent upper case export macros as generated by CMake.


2015-01-13 22:03:01 Sascha Zelzer [3bf80c]
Use proper diffs for patching external projects.


2015-01-13 17:42:19 Sascha Zelzer [b0782b]
Added missing imported targets from external projects.


2015-01-13 13:54:44 Sascha Zelzer [994a4b]
Fixed ITK IO factory manager registration.


2015-01-12 19:29:59 Sascha Zelzer [311269]
Merge branch 'bug-18604-iterate-over-all-mimetypes-2' into bug-18605-modern-cmake-and-c++11


2015-01-12 19:04:26 Sascha Zelzer [6ceeca]
Added Boost as a public dependency because SOFA headers need it.


2015-01-12 19:03:56 Sascha Zelzer [921cec]
Removed obsolete Qxt_DIR entry.


2015-01-12 19:03:37 Sascha Zelzer [24ee19]
Fixed GDCM library search path.


2015-01-12 19:03:19 Sascha Zelzer [e4710f]
Fixed Poco build issues with new CMake system.


2015-01-12 15:01:50 Sascha Zelzer [80734a]
Merge remote-tracking branch 'origin/bug-18601-UpdatePoco' into bug-18605-modern-cmake-and-c++11

Adapted minimum required CMake version to 3.1.

Conflicts:
CMakeLists.txt


2015-01-11 14:44:49 Sascha Zelzer [b95971]
Fixed error-warnings and package dependencies


2015-01-09 18:19:36 Sascha Zelzer [ee069f]
Merge branch 'bug-18547-cmake-usage-requirements' into bug-18605-modern-cmake-and-c++11

Conflicts:
BlueBerry/CMake/MacroCreateCTKPlugin.cmake
BlueBerry/CMakeLists.txt
CMake/mitkFunctionUseModules.cmake
Core/Code/DataManagement/mitkLandmarkProjectorBasedCurvedGeometry.h
Core/Code/IO/mitkAbstractFileIO.h
Core/Code/IO/mitkCustomMimeType.h
Core/Code/IO/mitkIFileIO.h
Core/Code/IO/mitkIOConstants.h
Core/Code/IO/mitkIOMimeTypes.h
Core/Code/IO/mitkImageGenerator.h
Core/Code/IO/mitkMimeType.h
Core/Code/IO/mitkVtkLoggingAdapter.h
Core/Code/Interfaces/mitkIPersistenceService.h
Core/Code/Interfaces/mitkIPropertyAliases.h
Core/Code/Interfaces/mitkIPropertyDescriptions.h
Core/Code/Interfaces/mitkIPropertyExtensions.h
Core/Code/Interfaces/mitkIPropertyFilters.h
Core/Code/Rendering/mitkGradientBackground.h
Core/Code/Rendering/mitkPlaneGeometryDataMapper2D.h
Core/Code/Rendering/mitkRenderWindowFrame.h
Core/Code/Rendering/vtkMitkRectangleProp.h
Modules/AlgorithmsExt/CMakeLists.txt
Modules/CMakeLists.txt
Modules/DiffusionImaging/DiffusionCore/DicomImport/mitkDiffusionDICOMFileReader.cpp
Modules/DiffusionImaging/DiffusionCore/IODataStructures/DiffusionWeightedImages/mitkDiffusionImage.h
Modules/LegacyGL/mitkGLMapper.h
Modules/LegacyGL/mitkPointSetGLMapper2D.h
Modules/LegacyGL/mitkSurfaceGLMapper2D.h
Modules/LegacyIO/CMakeLists.txt
Modules/QtWidgets/CMakeLists.txt


2015-01-09 17:52:59 Marco Nolden [4ad82a]
Enable C++11 for MITK and ITK


2015-01-09 16:02:14 Sascha Zelzer [cb14c8]
Removed module conf files and use CMake public/private/interface requirements.


2014-12-10 17:54:06 Sascha Zelzer [b06b9b]
Use CMakeParseArguments instead of custom MacroParseArguments.cmake file.


2014-12-10 14:40:22 Sascha Zelzer [710303]
Use the GenerateExportHeader and visibility facilities from CMake.

For backwards compatibility of export macro names the new
MITK_LEGACY_EXPORT_MACRO_NAME CMake variable is introduced which
is set to true by default. This keeps the CamelCase style for the
export macro names.


2015-01-09 11:33:48 Stefan Kislinskiy [e27224]
Updated Poco to version 1.6.0.

User zelzer has pushed new remote branch:

bug-18605-modern-cmake-and-cxx11

[28871d]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-06 04:18:25 Sascha Zelzer [5fdb1d]
COMP: Read build configurations before custom dependency logic.


2015-02-06 03:39:47 Sascha Zelzer [f144ca]
COMP: Figure out Qt binary install path for finding qhelpgenerator.


2015-02-06 03:39:10 Sascha Zelzer [58da5c]
COMP: OpenCL is a public dependency of MitkOpenCL.


2015-02-06 03:38:50 Sascha Zelzer [fac483]
COMP: Make Boost super-build work with spaces in path names.


2015-02-06 03:38:37 Sascha Zelzer [651178]
COMP: Fixed C++11 compiler flag handling and VCL bug for gcc 4.6.


2015-02-06 03:34:44 Sascha Zelzer [ea7e94]
COMP: Correctly consider current option value.

[2765c7]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-06 11:54:26 Sascha Zelzer [fd0ba3]
COMP: Removed wrong install name dir.


2015-02-06 11:46:02 Sascha Zelzer [e90da2]
COMP: Fixed again resource path for unit test.

User kislinsk has pushed new remote branch:

bug-18605-cmake-library-and-include-path

[8ccc0e]: Merge branch 'bug-18605-cmake-library-and-include-path'

Merged commits:

2015-02-06 12:12:20 Stefan Kislinskiy [dce943]
COMP: Pass CMAKE_LIBRARY_PATH and CMAKE_INCLUDE_PATH from superbuild to MITK build.

User kislinsk has pushed new remote branch:

bug-18605-opencv-install-prefix

[98a3ae]: Merge branch 'bug-18605-opencv-install-prefix'

Merged commits:

2015-02-06 16:29:52 Stefan Kislinskiy [baa3c0]
COMP: Install OpenCV directly into ep/lib and ep/bin for Windows.

User kislinsk has pushed new remote branch:

bug-18605-revert-opencv-install-prefix

[9e2e01]: Merge branch 'bug-18605-revert-opencv-install-prefix'

Merged commits:

2015-02-09 07:29:52 Stefan Kislinskiy [ad3431]
COMP: OpenCV find module require libraries to be located in arch specific subdirectories.

The OpenCV library path has to be handled specially regarding to OpenCVConfig.cmake. Patching away arch specific subdirectories didn't work.

User kislinsk has pushed new remote branch:

bug-18605-opencv-library-search-paths

[da1639]: Merge branch 'bug-18605-opencv-library-search-paths'

Merged commits:

2015-02-09 10:40:13 Stefan Kislinskiy [fedf7e]
COMP: Handle OpenCV library search paths.

All branches were also merged into bug-18605-modern-cmake-and-cxx11.

[5267eb]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-09 13:06:39 Sascha Zelzer [0c2718]
COMP: Removed duplicate test entry.

User kislinsk has pushed new remote branch:

bug-18605-add-opencv-path-to-dashboard-setup

[095315]: Merge branch 'bug-18605-add-opencv-path-to-dashboard-setup'

Merged commits:

2015-02-09 13:18:41 Stefan Kislinskiy [3b9470]
COMP: Add OpenCV path to dashboard setup.

[f90585]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-10 02:34:07 Sascha Zelzer [bb3e83]
COMP: Don't use MITK_USE variables of external projects in the setup script.


2015-02-10 02:33:26 Sascha Zelzer [ff6731]
COMP: Fixed subtle memory management bug in pic file reader.

Memory was allocated by ipPicGet via malloc() but freed in MITK via
delete[] which led to segfaults on certain systems. Further, it seems
that filling the MITK image memory with the ipPicDescriptor memory
worked just by coincidence, because the mitk::Image::GetData() method
allocates a memory block via new[] which was given to a ipPicDescriptor
as a void* and subsequently deleted in ipPicClear (called from
ipPicGet). However, the ipPicGet method then malloc's a memory block
of the same size which seemed to be allocated at the same address as
the block returned via mitk::Image::GetData() thus having the mitk::Image
point to a valid memory address (by coincidence) and later freeing it
with a wrong delete[] call.


2015-02-10 02:24:38 Sascha Zelzer [b1d983]
COMP: Fixed external proj dependency handling and removed unnecessary

find_package() calls in package config files.


2015-02-09 13:21:16 Stefan Kislinskiy [c4cf3c]
Merge branch 'bug-18605-add-opencv-path-to-dashboard-setup' into bug-18605-modern-cmake-and-cxx11

[25ad85]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-10 02:54:16 Sascha Zelzer [32662a]
COMP: OpenCVConfig.cmake cannot be included in ctest script mode.

[7c8795]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-10 03:16:32 Sascha Zelzer [a51f57]
COMP: find_library appends a "lib" suffix which is not present for OpenCV.

[634183]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-10 07:07:01 Stefan Kislinskiy [4b2b95]
COMP: Fixed Boost configure command syntax (works for both, paths with and without spaces).

[213c78]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-11 00:07:44 Sascha Zelzer [e6ca35]
Fixed issues when using MITK as an external project.


2015-02-11 00:07:12 Sascha Zelzer [243218]
Fixed handling of header only modules.


2015-02-11 00:06:33 Sascha Zelzer [51515c]
Additional sanity check for empty CMake variable.


2015-02-11 00:06:17 Sascha Zelzer [00220a]
Removed non-existent include directories.


2015-02-11 00:05:21 Sascha Zelzer [f9a2b0]
Removed duplicate CMake include.


2015-02-11 00:05:02 Sascha Zelzer [e9e162]
Added missing Poco Zip component.

[4a420a]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-11 00:18:34 Sascha Zelzer [8b5a0b]
Merge remote-tracking branch 'origin/bug-18605-modern-cmake-and-cxx11' into bug-18605-modern-cmake-and-cxx11

Conflicts:
CMake/mitkFunctionCreateModule.cmake

[e1210c]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-11 19:03:28 Sascha Zelzer [d2aa75]
COMP: Added missing C++11 flag for non-CMake projects.


2015-02-11 19:03:09 Sascha Zelzer [1e0fc7]
COMP: Only set CTEST_USE_LAUNCHERS of makefile generators.

Although some CMake documentation states that the variable will be
ignored for non-makefile generators, our CDash submissions from
Windows clients did not contain any output from build commands.

[5ce167]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-13 12:06:16 Sascha Zelzer [1e92bb]
COMP: Fixed SOFA binary directory for CDash.

[926984]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-13 14:37:09 Sascha Zelzer [14cd0e]
COMP: Don't guard find_package calls with _FOUND variable checks.

If a project (e.g. OpenCV) puts the _FOUND variable in the CMake cache,
its config file would not be read any more and hence certain
CMake variables would not have their proper value on subsequent
CMake configure runs.

[edf9a9]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-15 14:02:34 Sascha Zelzer [044022]
Guard against spaces in BOOST_ROOT.


2015-02-15 14:02:05 Sascha Zelzer [beb1d8]
On Windows, the Boost install dir for header files includes the version.

[8a1f91]: Merge branch 'bug-18605-modern-cmake-and-cxx11'

Merged commits:

2015-02-15 16:04:08 Sascha Zelzer [86987e]
COMP: Use correct boost library dir.

User kislinsk has pushed new remote branch:

bug-18605-buildsystem

[3d5eaa]: Merge branch 'bug-18605-buildsystem'

Merged commits:

2015-02-23 09:23:57 Stefan Kislinskiy [7d3302]
COMP: Recovered MitkExtQtHelpCollection.qhc.


2015-02-23 04:59:30 Stefan Kislinskiy [27e825]
Fixed COPYONLY parameters of configure_file commands.

CMake 3.2.1 C++ language features common in GNU 4.7.3 (Ubuntu 12.04 + ubuntu-toolchain-r/test g++-4.7) and MSVC 17.0.61030.0 (MSVC 2012 Update 4):

cxx_auto_type
cxx_decltype
cxx_enum_forward_declarations
cxx_extended_friend_declarations
cxx_extern_templates
cxx_final
cxx_lambdas
cxx_local_type_template_args
cxx_long_long_type
cxx_nullptr
cxx_override
cxx_range_for
cxx_right_angle_brackets
cxx_rvalue_references
cxx_static_assert
cxx_strong_enums
cxx_trailing_return_types
cxx_variadic_macros

CMake project which writes supported C++ features into a file.

@Andreas

Please configure the attached CMake project with our oldest supported version of AppleClang and attach the generated AppleClang-*.txt to this bug, thank you. :)

The official repositories of Ubuntu 12.04 include Clang 3.4, which does not reduce the feature list above (in fact it is by far the most complete feature list).

Ubuntu 12.04 Clang 3.4.0 C++ feature list

Mac OS X 10.9 AppleClang 5.0 (Clang SVN Version 3.3) C++ feature list

Thank you. As there are no limitations regarding AppleClang and the list above, it is final.

I made a wiki page about supported C++ 11/14 language features:
http://mitk.org/wiki/MITK_C%2B%2B_11/14_Status

User kislinsk has pushed new remote branch:

bug-18605-EnableCommonCXXCompileFeatures

As this "bug" is too monolithic. I decided to close it and to open smaller tasks if necessary if everything in here was merged into the master.

[fdc0fd]: Merge branch 'bug-18605-EnableCommonCXXCompileFeatures'

Merged commits:

2015-04-03 08:22:25 Stefan Kislinskiy [cca5bf]
Require at least MSVC 2012 Update 4 (compiler version 17.0.61030.0).


2015-03-30 14:41:31 Stefan Kislinskiy [2de9bf]
Added supported C++ compile features and updated min. req. compiler versions.