Hi,
I need to link to my SlicerCAT main target qMyApp (that is added via slicerMacroBuildAppLibrary) from external module.
From that external module I can see that qMyApp target is defined (it is exported in SlicerTargets.cmake) but it doesn’t have INCLUDE_DIRECTORIES property:
# Snippet of code that is part of an external module CMakeLists after Slicer is found
get_target_property(qMyApp_INCLUDE_DIR qMyApp INCLUDE_DIRECTORIES)
message("qMyApp_INCLUDE_DIR: ${qMyApp_INCLUDE_DIR}")
and the message says qMyApp_INCLUDE_DIR: qMyApp_INCLUDE_DIR-NOTFOUND.
Thus to link qMyApp from external module I need to explicitely link include dirs via target_include_directories(...) for example.
That is little bit strange as slicerMacroBuildAppLibrary uses include_directories(${include_dirs}) and add_library and cmake documentation says (even target is added from .cmake file and dirs included also from there):
The include directories are added to the
INCLUDE_DIRECTORIESdirectory property for the currentCMakeListsfile. They are also added to theINCLUDE_DIRECTORIEStarget property for each target in the currentCMakeListsfile. The target property values are the ones used by the generators.
I think the best solution would be to modify SlicerMacroBuildApplication.cmake and use target_include_directories instead of include_directories. Or to explicitely set property to target within SlicerMacroBuildApplication.cmake.
I also have the related question in order to solve my problem without modifying Slicer’s cmake macro:
How to export qMyApp_INCLUDE_DIR from my SlicerCAT CMakeLists to SlicerConfig.cmake?
For external projects I do that with mark_as_superbuild(qColadaApp_INCLUDE_DIR) but this doesn’t seem to work with SlicerCAT project. There is no qColadaApp_INCLUDE_DIR var in SlicerConfig.cmake