<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif;">
<div>This is a problem that has been cropping up in our projects that use ITK, VTK and SlicerExecutionModel. </div>
<div><br>
</div>
<div>You won’t see it UNLESS you turn on the ITKVTK/ITKVtkGlue modules.</div>
<div><br>
</div>
<div>The problem is this: if you find packages in this order:</div>
<div><br>
</div>
<div>find_package(VTK REQUIRED)</div>
<div>find_package(ITK REQUIRED)</div>
<div><br>
</div>
<div>You can’t real compile anything that needs VTK, because down in the ITK deployment stuff, it calls find_package(VTK) like this:</div>
<div>
<div>find_package(VTK COMPONENTS</div>
<div>  vtkCommonCore</div>
<div>  vtkRenderingCore</div>
<div>  vtkRenderingOpenGL</div>
<div>  vtkRenderingFreeType</div>
<div>  vtkInteractionStyle</div>
<div>  vtkIOImage</div>
<div>  vtkImagingSources</div>
<div>  REQUIRED)</div>
</div>
<div><br>
</div>
<div>Which blows away the larger list of include directories and libraries that the first find_package(VTK REQUIRED) built.</div>
<div><br>
</div>
<div>Even better — or worse — Modules/Segmentation/LevelSetsv4Visualization/CMakeLists.txt also include find_package(VTK) — so ITK tries to import VTK twice, with different module lists.</div>
<div><br>
</div>
<div>It doesn’t even help to reverse the order:</div>
<div>find_package(ITK REQUIRED)</div>
<div>find_package(VTK REQUIRED)</div>
<div><br>
</div>
<div>because apparently there’s some hangover from the find_package(VTK) inside the ITK CMake deployment files.  The only thing that works is to use COMPONENTS, i.e.</div>
<div><br>
</div>
<div>find_package(ITK REQUIRED)</div>
<div>find_package(VTK COMPONENTS vtkCommonCore vtkRenderingAnnotation … REQUIRED)</div>
<div><br>
</div>
<div>Which seems to trigger a proper re-scan and build of the library/include lists.</div>
<div><br>
</div>
<div>It gets even worse if you use find_package(SlicerExecutionModel) after find_package(ITK), for the same reason — SlicerExecutionModel depends on ITK, so it clobbers the include/library lists from the first find_package(ITK).</div>
<div><br>
</div>
<div><br>
</div>
<br>
<br>
<hr>
Notice: This UI Health Care e-mail (including attachments) is covered by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and may be legally privileged.  If you are not the intended recipient, you are hereby notified that any
 retention, dissemination, distribution, or copying of this communication is strictly prohibited.  Please reply to the sender that you have received the message in error, then delete it.  Thank you.
<hr>
</body>
</html>