[vtkusers] find_package( ITK ) overrides ${VTK_LIBRARIES} from find_package( VTK )

Cory Quammen cory.quammen at kitware.com
Tue Dec 2 11:34:20 EST 2014


Pablo,

I was just looking into this myself after encountering the same behavior.

If you want to include the VTK libraries needed for ITK and specify an
additional set of VTK modules in your project, I suggest the
following:

find_package(ITK REQUIRED)
include(${ITK_USE_FILE})

set(VTK_MODULES_REQUESTED ${VTK_MODULES_REQUESTED} [additional VTK modules])
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

This should work. VTK_LIBRARIES should be set to only the VTK
libraries needed for the modules requested by ITK and by you, plus
their dependencies. Let us know if it doesn't.

Thanks,
Cory


On Tue, Dec 2, 2014 at 8:36 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
> As David said you can explicitly list the modules that your app uses.
>
> Or, reset the vtk modules that itk sets using:
> set(VTK_MODULES_REQUESTED "")
> before
> find_package(VTK REQUIRED)
>
> On Tue, Dec 2, 2014 at 12:39 AM, David Gobbi <david.gobbi at gmail.com> wrote:
>> Hi Pablo,
>>
>> It's best to only link to the VTK libraries that you need, rather than
>> trying to
>> link to them all via ${VTK_LIBRARIES}.
>>
>> The reason for the short list is probably that when ITK calls
>> find_package(),
>> it only requests the small set of VTK components that ITK uses:
>> http://www.cmake.org/cmake/help/v2.8.9/cmake.html#command:find_package
>>
>>  - David
>>
>>
>> On Mon, Dec 1, 2014 at 10:26 PM, Pablo Hernández
>> <pablo.hernandez.cerdan at outlook.com> wrote:
>>>
>>> I  have a running/compiling CMakeLists.txt when using VTK only, this is
>>> the related VTK part:
>>> find_package(VTK 6.2 REQUIRED)
>>>  message (status "** VTK FOUND: USE_FILES ${VTK_USE_FILE}")
>>> message (status "** VTK FOUND: VTK_LIBRARIES ${VTK_LIBRARIES}")
>>>
>>> include(${VTK_USE_FILE})
>>> include_directories( ${VTK_INCLUDE_DIRS})
>>> include_directories(${CMAKE_CURRENT_SOURCE_DIR})
>>>
>>> add_executable(VTKNodesEdgesEXE main.cpp ${source_files} ${QT_UI_HEADERS}
>>> ${QT_RESOURCES})
>>> target_link_libraries(VTKNodesEdgesEXE ${VTK_LIBRARIES})
>>> target_link_libraries(VTKNodesEdgesEXE Qt5::Widgets Qt5::PrintSupport)
>>>
>>>
>>> The problem is that if I add find_package(ITK) anywhere, ${VTK_LIBRARIES}
>>> gets overrides by a tiny list selected by ITK.
>>
>>
>
>
>
> --
> Unpaid intern in BillsBasement at noware dot com
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers


More information about the vtkusers mailing list