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_DIRECTORIES
directory property for the currentCMakeLists
file. They are also added to theINCLUDE_DIRECTORIES
target property for each target in the currentCMakeLists
file. 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