Hi,

did you set GDCM_DIR to your externally built GDCM? What is the output if you build the project "GDCM" in MITK-superbuild.sln?

You could also send us the CMakeCache.txt file of your MITK superbuild tree, so we can have a closer look.

Best,
Sascha

P.S.: You should not have to modify any CMake files in the MITK source tree.

On 08/09/2011 11:43 PM, Miranda Jacob wrote:

Hello,

Thank you for the input. I have successfully built and compiled VTK, ITK, and GDCM with no problems. I can then run cmake on MITK as a superbuild but then I run into a problem when I try to compile MITK-superbuild.sln. When it goes to build mitkcore.lib it does not have the path to the gdcmMSFF.lib so the linker fails which then causes multiple things to fail because mitkcore.lib is used by everything. So I have spent the last day trying to figure out where I need to add the GDCM/bin folder so my project will link. Does anyone know off hand which .cmake file CMakeLists.txt to change. The additional include directory for mitkcore.lib already includes VTK/bin and ITK/bin but not GDCM/bin which I am assuming is because ITK depends on GDCM. So I will keep trying to figure out the exact location but if anyone happens to know of hand that would be great.

Thank you,

Miranda

*From:*Clarkson, Matt [mailto:[email protected]]
*Sent:* Monday, August 08, 2011 11:04 PM
*To:* Miranda Jacob
*Cc:* Marco Nolden; mitk-users
*Subject:* Re: [mitk-users] Mitk third party libraries

Hi Miranda.

i have built my project with my own versions of VTK, ITK, CTK, GDCM, and various other libraries that we use. The basic idea is that you build all your own libraries first, and then build MITK where you set variables like ITK_DIR, VTK_DIR to point to the ones you just created. The variables you need to set can be found in the CMakeExternals directory. For example, in the ITK.cmake, there is a line IF (NOT DEFINED ITK_DIR), and similarly for all the other libraries. You can leave the MITK SuperBuild flag on, so that all the libraries you are not replacing like OpenCV get built as MITK intends.

So, yes I believe it can be done, and you are heading in the right direction to do this. Whether you should do this is debatable. I did it because at one point we were on an older version of ITK, but now we are on the same version, its a bit redundant. Also, it is possible to get caught out where MITK specify one setting for ITK (for example), and you compile ITK with different settings and then MITK won't build. Its up to you.

1. How you build these libraries is up to you. You could for example include all the source code in your own project. For example, I believe the GIMIAS project do this (www.gimias.org <http://www.gimias.org>). Or you could pull the source code from an external website or svn/git repository using the CMake ExternalProject concept. I effectively created my own SuperBuild that would download the dependencies, build them in much the same way MITK does, and then also download MITK as part of my own SuperBuild.

2. So I use CMake once on my project, selecting the things I want to build. I have flags for a bunch of command line programs, whether to build the MITK based GUI etc. CMake then generates a top level Makefile (unix), or .sln file (Windows). So, in Windows terms, I just open the .sln file and it builds everything including MITK in one go. As I have created my own SuperBuild, I can then have the settings I want on my third party libraries like ITK.

3. When I run MITK, I keep the SuperBuild on, to make sure that the MITK project builds any libraries that it doesn't find. So, if MITK adds a library that I don't want to build myself, then the MITK SuperBuild will build it when it builds the MITK project.

4. I believe that if you have made a decent build, by writing your own CMake code, then you would open your own top level .sln file, and just run that. Upon successful completion of the whole lot, you can then just re-build your own code as part of your code-compile-test cycle.

HOWEVER, all this goes give you a headache with testing, on all 3 platforms, especially with packaging your final application. I have a suite of programs that get bundled which includes command line programs and scripts etc, so I also had to write my own CPack code. So, if I was starting again, and I was just building a GUI, I would just use the MITK project template, and use that exclusively, and write my own code in modules, and build plugins. That way all the CPack code already works.

Hope that helps.

(also, I'm going on vacation tomorrow, so I apologise if you get no more replies).

Matt

On 8 Aug 2011, at 22:00, Miranda Jacob wrote:



Thank you for the response. I am still trying to understand the MITK build setup. Are there specific version of VTK, ITK, and GDCM that I should download and use?? I know you had said the third party downloads are not specific but I need choose a version so if there is a recommended one to use that would be helpful.

So if I do choose to download my own version of VTK 5.6.1, ITK 3.20 and GDCM 2.0.18 and build it myself I am wondering the steps needed to make it work.

1.Put each third party library in it’s own source directory.

2.Use CMake for each third party project and build them into a build directory with the appropriate settings. Do I need to open the third party solutions and build them before running CMake on MITK??

3.Then run Cmake on MITK setting the 3 directories for VTK, GDCM, and ITK. Do I uncheck the MITK_USE_SUPERBUILD. Is there any other settings for this build I need to setup, check, or uncheck??

4.Then if this works then what .sln for MITK do I build?? Will this solution build the third party code or do I have to do that myself??

What I have done right now it I have run CMake on VTK, ITK, and GDCM and then attempt to run CMake on MITK. I set the GDCM_DIR, VTK_DIR, and ITK_DIR to the appropriate directory. I turn off MITK_USE_SUPERBUILD and select MITK to BUILD_ALL_PLUGINS. When I run CMAKE it can’t find my GDCM version. The version is blank which means it can’t find it. I built my ITK with the ITK_USE_SYSTEM_GDCM turned off. The GDCM version I have built using CMake is 2.0.19.

Just wondering if there are some general instructions on how to build the way I am trying to build?

Thank you,

Miranda

*From:*Marco Nolden [mailto:[email protected]]
*Sent:*Saturday, August 06, 2011 5:01 AM
*To:*Miranda Jacobson
*Cc:*[email protected] <mailto:[email protected]>
*Subject:*Re: [mitk-users] Mitk third party libraries

Hi Miranda,

you can use MITK with your own libraries as well, e.g. if you build a VTK 5.6.1 yourself you can set the VTK_DIR to this build tree in the MITK configuration and the superbuild won't download and build VTK. The same applies for the other 3rd party libraries. You can have a look at the files in CMakeExternals to see how it works. There you will also find the options we use to build the toolkits, other options may or may not work.

The source codes inhttp://mitk.org/download/thirdpartyare not specific. If we change something there we do it with a patch step in superbuild (like for DCMTK) or will mark it clearly as a modified version.

Please note that for GDCM there is an unresolved compilation issue with GDCM > 2.0.15 and ITK 3.20, a workaround is described here:http://bugs.mitk.org/show_bug.cgi?id=8801.

Using the latest git-Versions of these libraries could work but is generally unsupported. If you want to contribute changes to MITK to make it compatible with these versions we would be happy to integrate them.

Best,
Marco

On 08/05/2011 11:11 PM, Miranda Jacobson wrote:

Hello,

I am curious if MITK needs to be built and used with the VTK, ITK, and GDCM that MITK downloads when the superbuild is performed. I want to be able to build MITK without being forced to download the third party libraries but wanted to clarify which versions I need to build myself. Are the versions onhttp://mitk.org/download/thirdpartyspecific?? If I download a generic version of VTK5.6.1 from the VTK website will MITK still work? I had read on the mitk mailing list

“recently we improved the DICOM reading code in mitk::DicomSeriesReader.

Since this class was getting really complicated (it supported GDCM before and after 2.0, plus ITK's DICOMIO) and most of the functional, new code relied on GDCM 2, we decided to remove support for other options.

A consequence of this is that MITK core now requires ITK to be built with a custom compile of GDCM (2.0.14 is the version that is currently built by super-build). We are sorry if this causes inconveniences for you.

We hope this change will benefit any developers who want to understand or improve DicomSeriesReader and it will also make sure that more DICOM images are loaded correctly with MITK.”

So this made me think that if I git the ITK and GDCM repositories from their specific sites hat MITK will not compile or run. Can you please clarify if MITK needs specific versions. I would like to be able to clone the VTK, ITK, and GCDM repositories from their own site so I can benefit from bug fixes and added features.

Thank you,

Miranda Jacobson

Software Engineer

Eigen, Inc.

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts.
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1_______________________________________________
mitk-users mailing list
[email protected] <mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/mitk-users


------------------------------------------------------------------------------
uberSVN's rich system and user administration capabilities and model 
configuration take the hassle out of deploying and managing Subversion and 
the tools developers use with it. Learn more about uberSVN and get a free 
download at:  http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to