<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 21, 2016 at 5:06 PM, Matt McCormick <span dir="ltr"><<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Rashad,<br>
<br>
The Find<Package>.cmake are purposely not provided because it is not<br>
reliable and does not provide all the information required. The CMake<br>
package configuration file allows ITK to declare what is required to<br>
build it instead of requiring CMake to guess (and get it wrong).<br>
<br>
For this case, it is recommended to turn off ITK_USE_SYSTEM_ZLIB,<br>
which will make the ITK installation portable.<br></blockquote><div><br></div><div>I need to use zlib, fftw and expat in that case from ITK build/<br><br></div><div>But I have also providing a different build of zlib for my other projects.<br><br></div><div>What are the missing information when using FindITK.cmake as opposed to itk cmake configuration files?<br><br></div><div>I understand that saving absolute path of libraries which link with project is easy to avoid any issues in linking or at runtime.<br></div><div> And that is one type of solution and IMHO does not solve the problem.<br><br></div><div>Apart from that I would like to find out what are real issues with Find<Package>.cmake<br><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
HTH,<br>
Matt<br>
<br>
On Wed, Dec 21, 2016 at 9:03 AM, Rashad Kanavath<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:mohammedrashadkm@gmail.com">mohammedrashadkm@gmail.com</a>> wrote:<br>
> Hello Dženan,<br>
><br>
> Thanks for your reply.  Unfortunately, this won't work in my case. I will<br>
> try to explain it.<br>
><br>
> I have installed itk in my system say: c:/projects/itk_install<br>
><br>
> now I copy itk_install directory to another system of my colleague. If<br>
> he/she is copying my "itk_install" folder into any directory other than<br>
> c:/projects/, itk build is useless.<br>
> cmake says it cannot find file c:/projects/itk_install/lib/<wbr>ITKxxxxx.dll<br>
> etc..<br>
><br>
> This error is coming from<br>
> c:/projects/itk_install/lib/<wbr>cmake/ITK-4.10/ITKTargets-<wbr>release.cmake. Note<br>
> that this file is generated by cmake.<br>
><br>
> So I have two options:<br>
> 1. ask to copy "itk_install" directory to c:/projects/itk_install (easy, )<br>
> 2. copy "itk_install" directory anywhere but search in<br>
> <your-install-prefix>/lib/<wbr>cmake/ITK-4.10 and replace all occurrence of<br>
> c:/projects/itk_install with <your-install-prefix><br>
><br>
> Second solution is more awful compared to first. So for now, I insist on<br>
> first option. But after a couple of such installation of "itk_install", it<br>
> seems bad to me.<br>
> Like I mentioned in last thread, technically my itk_install could be reused<br>
> if cmake does not have absolute path in the install tree for ZLIB, fftw<br>
> etc..<br>
><br>
> FYI, there are other projects which does same thing and for them I have a<br>
> custom Find<Package>.cmake in source tree. So don't care what ever they have<br>
> in their lib/cmake/<Package> files<br>
><br>
> If ITK devs can provide FindITK.cmake , then we could reuse that. Instead of<br>
> ITKConfig.cmake stuff.<br>
><br>
> Hope I explained case well. Let me know if you need any more information.<br>
><br>
> Appreciate your help in solving this.<br>
><br>
><br>
> On Tue, Dec 20, 2016 at 4:15 PM, Dženan Zukić <<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>> wrote:<br>
>><br>
>> Hi Rashad,<br>
>><br>
>> one way to generate install tree in a different location is by changing<br>
>> CMAKE_INSTALL_PREFIX in CMake, reconfiguring, regenerating project, the<br>
>> building the INSTALL target. That should generate the install tree in your<br>
>> desired location.<br>
>><br>
>> Regards,<br>
>> Dženan<br>
>><br>
>> On Tue, Dec 20, 2016 at 4:48 AM, Rashad Kanavath<br>
>> <<a href="mailto:mohammedrashadkm@gmail.com">mohammedrashadkm@gmail.com</a>> wrote:<br>
>>><br>
>>> Hello all,<br>
>>><br>
>>> Is there a simple FindITK.cmake which can be used instead of config and<br>
>>> targets cmake files?<br>
>>><br>
>>> in my install tree, in ITKTargets-release.Cmake there exists absolute<br>
>>> path for include and lib file.<br>
>>><br>
>>> My install tree of ITK does not work on a different machine unless I copy<br>
>>> them too exact same directory where I installed on machine.<br>
>>><br>
>>> This goes against portability and it is cmake who is doing this work.<br>
>>><br>
>>> Here is code in ITKTargets-release.cmake<br>
>>><br>
>>> set_property(TARGET ITKMetaIO APPEND PROPERTY IMPORTED_CONFIGURATIONS<br>
>>> RELEASE)<br>
>>> set_target_properties(<wbr>ITKMetaIO PROPERTIES<br>
>>>   IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/<wbr>ITKMetaIO-4.10.lib"<br>
>>>   IMPORTED_LINK_INTERFACE_<wbr>LIBRARIES_RELEASE<br>
>>> "C:/dashboard/otb/install_sb_<wbr>x86/lib/zdll.lib;comctl32;<wbr>wsock32"<br>
>>>   IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/<wbr>ITKMetaIO-4.10.dll"<br>
>>>   )<br>
>>><br>
>>> see the absolute path to C:/dashboard/otb/install_sb_<wbr>x86/lib/zdll.lib<br>
>>><br>
>>> so if on a different machine no matter where I copy these cmake files for<br>
>>> ITK, I must have zdll.lib in C:/dashboard/otb/install_sb_<wbr>x86/lib/<br>
>>> and same goes for fftw, expat etc.. if enabled.<br>
>>><br>
>>> A simple find_package searching for for include and headers is portable<br>
>>> than config files. Right now even copying the files on same compiler won't<br>
>>> work.<br>
>>> But in reality there is no technical issues.<br>
>>><br>
>>> Is anyone aware of a better way other than manually updating those<br>
>>> absolute path to zdll.lib<br>
>>><br>
>>> On Tue, May 24, 2016 at 1:21 AM, Matt McCormick<br>
>>> <<a href="mailto:matt.mccormick@kitware.com">matt.mccormick@kitware.com</a>> wrote:<br>
>>>><br>
>>>> Hi Rashad,<br>
>>>><br>
>>>> It looks like MXE is configured to use system versions of EXPAT, HDF5,<br>
>>>> JPEG, PNG, TIFF, and ZLIB:<br>
>>>><br>
>>>><br>
>>>> <a href="https://github.com/mxe/mxe/blob/4135f9b1227ba56b92ceb8a982016370ad5c8894/src/itk.mk#L28-L33" rel="noreferrer" target="_blank">https://github.com/mxe/mxe/<wbr>blob/<wbr>4135f9b1227ba56b92ceb8a9820163<wbr>70ad5c8894/src/itk.mk#L28-L33</a><br>
>>>><br>
>>>> USE_SYSTEM could be disabled for these libraries.<br>
>>>><br>
>>>> Or, it may be possible for the module system to learn relative<br>
>>>> locations of these libraries with ITK_USE_SYSTEM*. But, it would work<br>
>>>> best if these projects were configured with CMake, create a<br>
>>>> <project>Config.cmake or <project>-config.cmake file, and use relative<br>
>>>> paths internally.<br>
>>>><br>
>>>> HTH,<br>
>>>> Matt<br>
>>>><br>
>>>> On Tue, May 10, 2016 at 5:25 PM, Rashad Kanavath<br>
>>>> <<a href="mailto:mohammedrashadkm@gmail.com">mohammedrashadkm@gmail.com</a>> wrote:<br>
>>>> ><br>
>>>> ><br>
>>>> > On Tue, May 10, 2016 at 10:50 PM, Dženan Zukić <<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>><br>
>>>> > wrote:<br>
>>>> >><br>
>>>> >> Hi Rashad,<br>
>>>> >><br>
>>>> >> a few months ago relative paths were completely removed from CMake,<br>
>>>> >> because they were never fully implemented. Have you followed<br>
>>>> >> recommendations<br>
>>>> >> from here for cross-compiling?<br>
>>>> ><br>
>>>> ><br>
>>>> > Yes. indeed. I had updated the mxe/src/<a href="http://itk.mk" rel="noreferrer" target="_blank">itk.mk</a> for several versions of<br>
>>>> > ITK!<br>
>>>> ><br>
>>>> > Regarding relative path in cmake, I don't understand.  I didn't use<br>
>>>> > cmake<br>
>>>> > specific REL_PATH.<br>
>>>> >><br>
>>>> >><br>
>>>> >> As for integrating your changes into ITK, you should submit a patch<br>
>>>> >> following the instructions here. If your changes don't break<br>
>>>> >> anything, they<br>
>>>> >> are likely to be integrated.<br>
>>>> ><br>
>>>> ><br>
>>>> > issue here is a bit different. For all libitk* stuff the story ends<br>
>>>> > well.<br>
>>>> > For thirdparties, zlib, expat etc.. it is good idea to put the full<br>
>>>> > path<br>
>>>> > because we don't know if they are in same install directory as ITK or<br>
>>>> > not.<br>
>>>> > But this make the installed cmake modules non-portable even to a<br>
>>>> > different<br>
>>>> > location on the same disk.<br>
>>>> ><br>
>>>> > Now if anyone want to provide a distributable setup of ITK. patch the<br>
>>>> > generated cmake files with sed and then copy it. This is what I am<br>
>>>> > doing<br>
>>>> > right now!<br>
>>>> > A simple not perfect solution is to have all thirdparties make<br>
>>>> > <LIBRARY>_PREFIX variable inside the ITKConfig.cmake<br>
>>>> ><br>
>>>> > and for each library we use <LIBRARY>_PREFIX/include and<br>
>>>> > <LIBRARY>_PREFIX/lib<br>
>>>> ><br>
>>>> ><br>
>>>> > Another option is to avoid full path directly inside cmake module<br>
>>>> > files and<br>
>>>> > put find_package() calls in the install tree.<br>
>>>> ><br>
>>>> > As these files are autogenerated by cmake, don't know what is<br>
>>>> > possible.<br>
>>>> ><br>
>>>> ><br>
>>>> ><br>
>>>> ><br>
>>>> ><br>
>>>> >><br>
>>>> >> Regards,<br>
>>>> >> Dženan<br>
>>>> >><br>
>>>> >> On Mon, May 9, 2016 at 4:27 PM, Rashad Kanavath<br>
>>>> >> <<a href="mailto:mohammedrashadkm@gmail.com">mohammedrashadkm@gmail.com</a>> wrote:<br>
>>>> >>><br>
>>>> >>> Hello all,<br>
>>>> >>><br>
>>>> >>> I have some issue when copying ITK install directory to a different<br>
>>>> >>> system. I agree this is not usual and may not appear on a linux<br>
>>>> >>> distro or<br>
>>>> >>> windows.<br>
>>>> >>><br>
>>>> >>> My requirement is bit different. I cross-compile ITK and then use<br>
>>>> >>> the<br>
>>>> >>> binaries on Windows. Using dll and headers are fine. But the<br>
>>>> >>> installed cmake<br>
>>>> >>> files are a problem. They have absolute path in<br>
>>>> >>> ITK-4.8/Modules/*.cmake<br>
>>>> >>> files. It is not in all .cmake files even though I put a wildcard<br>
>>>> >>> there..<br>
>>>> >>><br>
>>>> >>> For a easy and quick workaround. I rely on mighty sed command to<br>
>>>> >>> insert<br>
>>>> >>> something into installed cmake file.<br>
>>>> >>><br>
>>>> >>> For example see this;<br>
>>>> >>> lib/cmake/ITK-4.8/ITKTargets-<wbr>release.cmake<br>
>>>> >>><br>
>>>> >>> set(CMAKE_IMPORT_FILE_VERSION 1)<br>
>>>> >>> set(LIB_INSTALL_PREFIX)<br>
>>>> >>> get_filename_component(<wbr>CURRENT_FILE_DIR "${CMAKE_CURRENT_LIST_FILE}"<br>
>>>> >>> PATH)<br>
>>>> >>> get_filename_component(LIB_<wbr>INSTALL_PREFIX "${CURRENT_FILE_DIR}"<br>
>>>> >>> PATH)<br>
>>>> >>> get_filename_component(LIB_<wbr>INSTALL_PREFIX "${LIB_INSTALL_PREFIX}"<br>
>>>> >>> PATH)<br>
>>>> >>> get_filename_component(LIB_<wbr>INSTALL_PREFIX "${LIB_INSTALL_PREFIX}"<br>
>>>> >>> PATH)<br>
>>>> >>><br>
>>>> >>> and at last:<br>
>>>> >>><br>
>>>> >>> $(SED) -i 's,$(PREFIX)/$(TARGET),\${LIB_<wbr>INSTALL_PREFIX},g'<br>
>>>> >>> 'lib/cmake/ITK-$(ITK_VER)/<wbr>ITKTargets-release.cmake'<br>
>>>> >>><br>
>>>> >>> I would like to have this patch inside the other .cmake files in the<br>
>>>> >>> installation and avoid the sed commands during post-installation<br>
>>>> >>><br>
>>>> >>> Here is the list of cmake files that needs this change.<br>
>>>> >>> lib/cmake/ITK-4.8/ITKTargets-<wbr>release.cmake<br>
>>>> >>> lib/cmake/ITK-4.8/Modules/<wbr>ITKZLIB.cmake<br>
>>>> >>> lib/cmake/ITK-4.8/Modules/<wbr>ITKExpat.cmake<br>
>>>> >>> lib/cmake/ITK-4.8/Modules/<wbr>ITKHDF5.cmake<br>
>>>> >>> lib/cmake/ITK-4.8/Modules/<wbr>ITKJPEG.cmake<br>
>>>> >>> lib/cmake/ITK-4.8/Modules/<wbr>ITKTIFF.cmake<br>
>>>> >>> lib/cmake/ITK-4.8/Modules/<wbr>ITKPNG.cmake<br>
>>>> >>><br>
>>>> >>> So is it possible to make the change into future version of ITK?<br>
>>>> >>><br>
>>>> >>> The major issue here is those cmake files are generated by cmake. Is<br>
>>>> >>> there a way cmake could use relative path ?<br>
>>>> >>><br>
>>>> >>><br>
>>>> >>> --<br>
>>>> >>> Regards,<br>
>>>> >>>    Rashad<br>
>>>> >>><br>
>>>> >>> ______________________________<wbr>_________________<br>
>>>> >>> Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
>>>> >>><br>
>>>> >>> Visit other Kitware open-source projects at<br>
>>>> >>> <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
>>>> >>><br>
>>>> >>> Kitware offers ITK Training Courses, for more information visit:<br>
>>>> >>> <a href="http://kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://kitware.com/products/<wbr>protraining.php</a><br>
>>>> >>><br>
>>>> >>> Please keep messages on-topic and check the ITK FAQ at:<br>
>>>> >>> <a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_<wbr>FAQ</a><br>
>>>> >>><br>
>>>> >>> Follow this link to subscribe/unsubscribe:<br>
>>>> >>> <a href="http://public.kitware.com/mailman/listinfo/insight-developers" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/insight-<wbr>developers</a><br>
>>>> >>><br>
>>>> >><br>
>>>> ><br>
>>>> ><br>
>>>> ><br>
>>>> > --<br>
>>>> > Regards,<br>
>>>> >    Rashad<br>
>>>> ><br>
>>>> > ______________________________<wbr>_________________<br>
>>>> > Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
>>>> ><br>
>>>> > Visit other Kitware open-source projects at<br>
>>>> > <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
>>>> ><br>
>>>> > Kitware offers ITK Training Courses, for more information visit:<br>
>>>> > <a href="http://kitware.com/products/protraining.php" rel="noreferrer" target="_blank">http://kitware.com/products/<wbr>protraining.php</a><br>
>>>> ><br>
>>>> > Please keep messages on-topic and check the ITK FAQ at:<br>
>>>> > <a href="http://www.itk.org/Wiki/ITK_FAQ" rel="noreferrer" target="_blank">http://www.itk.org/Wiki/ITK_<wbr>FAQ</a><br>
>>>> ><br>
>>>> > Follow this link to subscribe/unsubscribe:<br>
>>>> > <a href="http://public.kitware.com/mailman/listinfo/insight-developers" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/insight-<wbr>developers</a><br>
>>>> ><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> Regards,<br>
>>>    Rashad<br>
>><br>
>><br>
><br>
><br>
><br>
> --<br>
> Regards,<br>
>    Rashad<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div><font face="arial, helvetica, sans-serif">Regards,<br>   Rashad</font></div></div>
</div></div>