[Insight-users] Loading DICOM RTStructs

Luis Ibanez luis.ibanez at kitware.com
Thu Oct 22 09:48:22 EDT 2009


Hi Mark,

Thanks for filing the feature request in the MANTIS bug tracker.

We will give it a shot for the release of ITK 3.18.


     Thanks


           Luis


----------------------------------------------------------------------------------
On Wed, Oct 21, 2009 at 8:47 PM, Mark Roden <mmroden at gmail.com> wrote:
> Hi Luis,
>
> On Wed, Oct 21, 2009 at 2:59 PM, Luis Ibanez <luis.ibanez at kitware.com> wrote:
>> Hi Mark,
>>
>>
>> 1) Please log a bug ("Feature Request") In the MANTIS bug tracker:
>>
>>          http://public.kitware.com/Bug/my_view_page.php
>>
>>    To requesting the modification of the ITK installation procedure to
>>    use a single flat directory instead of the current set of subdirectories.
>>
>>     I agree with you in that, this will make easier to use ITK from
>>     external project, even in the cases where they use CMake
>>     for configuration.
>>
>>     We don't have headers with duplicate names (as far as I know)
>>     so name collisions shouldn't be an issue.
>
> Thanks, I'll head over there now.
>
>>
>>
>> 2) You may find useful to read the tutorial:
>>
>>               http://www.itk.org/ITK/help/tutorials.html
>>
>>     in particular:
>>
>>     http://www.itk.org/CourseWare/Training/GettingStarted-I.pdf
>>
>>     It will show you how to create a HelloWorld example from
>>     scratch.
>>
>>     The same procedure is explained in the initial chapters of
>>      the ITK Software Guide
>>
>>             http://www.itk.org/ItkSoftwareGuide.pdf
>>
>
> I was using the 'getting started' from the manual, and the HelloWorld
> code from that.  Both examples are still CMake-based, which is OK, but
> not what I want.
>
>>
>>
>> 3)  I don't see why you would need to include "itkConfigure.h"
>>     in any program that uses ITK.
>>
>>     If you have found that to be needed, you may be dealing
>>     with a larger configuration issue.
>>
>>     Normally, including headers such as "itkImage.h" should
>>     do the trick.
>>
>>     You may find useful to look at the many examples in the
>>      directory:
>>
>>                             Insight/Examples/
>>
>
> When I:
> 1) build the install directory (CMake, shared libraries on and nothing else)
> 2) Create a new sln (vs2008, new project, C++, win32 console app)
> 3) point to the itk/headers/common directory (additional include directories)
> 4) #include "itkimage.h"
> 5) build
> I get an error stating that itkconfigure.h could not be found.  If I
> then include that directory, I get another error that vnl_math.h could
> not be found.  If I'm doing something wrong, I'll happily correct my
> procedure, but that's how I thought things should be done.  Once the
> directory structure gets flattened, that would seem like the way to do
> things.
>
>>
>>
>> 4)  You may understand better the advantages of using CMake
>>     when you are confronted with the following scenarios:
>>
>>        A)    Moving your project from one computer to another,
>>               (even when they have identical operating systems
>>                 and build environments).
>
> I solve this problem by requiring that my projects always be buildable
> from source code.  If the project cannot be checked out, built, and
> then run entirely from a command line script, then it is broken.
> CMake is one way to solve this problem, MSBuild is another.  I'm used
> to MSBuild.
>
>>
>>        B)    Building your project in two (or more) different
>>                platforms.
>
> True.  I've done this as well, and have found that for the most part,
> when using native libraries, there needs to be some native code
> calling on the UI side.  Something like Qt may solve this issue, but
> when I first tried Qt it didn't have the UI widgets I needed and I
> haven't returned.  So, with that experience in hand, the team I was on
> had a large portion of the code was uniform across platforms, and some
> was Windows and some was Mac.  The unfortunate reality was that that
> did cause development to be lopsided in some features to one platform
> over another, but at the time, it was the best solution we had because
> the UI coding was so different and there wasn't a solution like Qt.
> Now, with Qt, I'd still just have the code in one place and buildable,
> and something like CMake may help, but I'm not in that environment at
> the moment.
>
>>
>>         C)   Building projects that have dependencies on
>>                many third party libraries.
>>
>
> When I do this, I check the libraries into the source repository, and
> just have cascading builds.  If I have the source for those libraries,
> great, then I can build them when a new version comes out, but for the
> most part, the libraries are unchanged over the time I change my code,
> so that the possibility of the interaction failing is minimized. So,
> with the libraries checked into source, and the source required to
> build from the command line at any given time not to be broken, this
> requirement is also fulfilled.
>
> It's just a different way to skin the cat.  I understand why itk does
> use CMake, because I don't support more than a single platform at a
> time, and I could see how modern UI widgets available across all UIs
> could make it possible to have a single unified codebase.
>
>>
>>      Of course, you are not forced to use CMake in order to
>>      take advantage of ITK.
>>
>
> And that is exciting to me, as I'm sure you can tell :)
>
> Thanks,
> Mark
>
>>
>>
>>   Regards,
>>
>>
>>          Luis
>>
>>
>> -------------------------------------------------------------------------
>> On Wed, Oct 21, 2009 at 1:29 PM, Mark Roden <mmroden at gmail.com> wrote:
>>> Hi Luis,
>>>
>>> Thanks for the help, but I'm still having problems.  Namely, the
>>> headers continue to be scattered throughout a directory tree rather
>>> than in one big folder.  I'll just do that by hand, I suppose.  But
>>> the include directory should be flat.  If there are headers that are
>>> named the same thing, then they should have different names just to
>>> avoid collisions in general.
>>>
>>> Here's the thing.  You compare ITK to STL, and it's STL that I'm
>>> thinking of.  There, when I #include <vector>, I don't also have to
>>> #include <algorithm> until I need an algorithm.  If I #include
>>> <itkimage.h> then I also need to include itkConfigure.h and then that
>>> needs vnl_math.h and then... and so forth, and they're all in
>>> different directories.  I want to be able to include the headers I
>>> need, but just point to one place to use that header, rather than
>>> pointing to a nested directory structure.  The structure can remain
>>> nested on the development side; that's entirely irrelevant to me.  But
>>> for the sake of ease of use, if it's all in one flat directory, then I
>>> don't need to learn Yet Another Build Tool (CMake), and can just
>>> include that directory and be done.
>>>
>>> I want to start from a blank slate project, where HelloWorld.cpp and
>>> HellowWorld.h are just there, and nothing else.  Instead, HelloWorld
>>> is surrounded by a bunch of other projects, and it's not at all clear
>>> how to make a new project that's entirely empty.  I don't even see a
>>> HelloWorld.h, and that weirds me out.  Within this separate project, I
>>> am now free to Do My Own Thing and impose whatever stylistic
>>> guidelines I want, anything from source control, unit tests, class
>>> organization, etc.  I don't like being tied to CMake as a tool because
>>> I don't see how it's necessary to get the job done, I just see it as a
>>> convenience for making the library.  Once the library is made, the
>>> tools to make it should get out of the way and let me do my thing.
>>>
>>> Thanks,
>>> Mark
>>>
>>
>


More information about the Insight-users mailing list