View Issue Details

IDProjectCategoryView StatusLast Update
0002351Slicer4Core: Extensionspublic2012-10-15 12:58
Reporterlassoan Assigned Tojcfr  
PrioritynormalSeveritytweakReproducibilityalways
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.3.0Fixed in VersionSlicer 4.2.0 
Summary0002351: Scripted modules appear in an inconsistent directory location when building multiple modules in a single extension
Description

When building an extension that consists of multiple modules the location of the different targets (qt-loadable vs. scripted) is not consistent:

e.g.,

Scripted modules are stored at a different location for each module:
f:\devel\SlicerRtExtensions-win64rel\DicomRtImport\lib\Slicer-4.1\qt-scripted-modules

All dlls are stored in one common directory:
f:\devel\SlicerRtExtensions-win64rel\lib\Slicer-4.1\qt-loadable-modules\Release

Probably it doesn't cause any problems, but it's inconsistent and may lead to problems in the future.

TagsNo tags attached.

Relationships

related to 0002647 closedjcfr Create a macro named slicerMacroBuildScriptedModule 

Activities

pinter

pinter

2012-10-15 06:58

developer   ~0006530

I changed the path in our extension by changing
DESTINATION_DIR ${CMAKE_CURRENT_BINARY_DIR}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR}
to
DESTINATION_DIR ${CMAKE_BINARY_DIR}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR}
in the ctkMacroCompilePythonScript call in the module CMakeLists.txt file.

Maybe if the same change is made in the templates, it'd be enough.

jcfr

jcfr

2012-10-15 10:50

administrator   ~0006540

I couldn't reproduce that problem on Linux. Is this issue specific to Windows ?

I checked the following structure and they seem to be valid:
1) Linux - build tree
2) Linux - package tree
3) windows - package tree

Could you provide more context ? Are we talking about the tree structure after installing on extension or may be the tree structure associated with windows build tree ?

Thanks

// ---------------------
1) Linux - build tree:

jchris@karakoram:~/Projects/SlicerRt-build/inner-build $ ls lib/Slicer-4.1/*
lib/Slicer-4.1/qt-loadable-modules:
libqSlicerContoursModule.so libvtkSlicerDoseAccumulationModuleLogicPythonD.so Python
libqSlicerDicomRtImportModule.so libvtkSlicerDoseAccumulationModuleLogic.so vtkSlicerDicomRtImportModuleLogicPython.so
libqSlicerDoseAccumulationModule.so libvtkSlicerDoseComparisonModuleLogicPythonD.so vtkSlicerDoseAccumulationModuleLogicPython.so
libqSlicerDoseComparisonModule.so libvtkSlicerDoseComparisonModuleLogic.so vtkSlicerDoseComparisonModuleLogicPython.so
libqSlicerDoseVolumeHistogramModule.so libvtkSlicerDoseVolumeHistogramModuleLogicPythonD.so vtkSlicerDoseVolumeHistogramModuleLogicPython.so
libqSlicerIsodoseModule.so libvtkSlicerDoseVolumeHistogramModuleLogic.so vtkSlicerIsodoseModuleLogicPython.so
libvtkSlicerDicomRtImportModuleLogicPythonD.so libvtkSlicerIsodoseModuleLogicPythonD.so
libvtkSlicerDicomRtImportModuleLogic.so libvtkSlicerIsodoseModuleLogic.so

lib/Slicer-4.1/qt-scripted-modules:
DicomRtImportPlugin.py DicomRtImportPlugin.pyc DicomRtImportSelfTest.py DicomRtImportSelfTest.pyc

// ---------------------
2) Linux - package tree:

jchris@karakoram:~/Projects/SlicerRt-build/inner-build/_CPack_Packages/Linux/TGZ/21184-linux-amd64-SlicerRT-svn356-2012-10-15 $ ls lib/Slicer-4.1/*
lib/Slicer-4.1/qt-loadable-modules:
libqSlicerContoursModule.so libvtkSlicerDoseAccumulationModuleLogicPythonD.so Python
libqSlicerDicomRtImportModule.so libvtkSlicerDoseAccumulationModuleLogic.so vtkSlicerDicomRtImportModuleLogicPython.so
libqSlicerDoseAccumulationModule.so libvtkSlicerDoseComparisonModuleLogicPythonD.so vtkSlicerDoseAccumulationModuleLogicPython.so
libqSlicerDoseComparisonModule.so libvtkSlicerDoseComparisonModuleLogic.so vtkSlicerDoseComparisonModuleLogicPython.so
libqSlicerDoseVolumeHistogramModule.so libvtkSlicerDoseVolumeHistogramModuleLogicPythonD.so vtkSlicerDoseVolumeHistogramModuleLogicPython.so
libqSlicerIsodoseModule.so libvtkSlicerDoseVolumeHistogramModuleLogic.so vtkSlicerIsodoseModuleLogicPython.so
libvtkSlicerDicomRtImportModuleLogicPythonD.so libvtkSlicerIsodoseModuleLogicPythonD.so
libvtkSlicerDicomRtImportModuleLogic.so libvtkSlicerIsodoseModuleLogic.so

lib/Slicer-4.1/qt-scripted-modules:
DicomRtImportPlugin.py DicomRtImportPlugin.pyc DicomRtImportSelfTest.py DicomRtImportSelfTest.pyc

// ---------------------
3) windows - package tree:

jchris@karakoram:~/Downloads/21176-win-amd64-SlicerRT-svn352-2012-10-14 $ ls lib/Slicer-4.1/*
lib/Slicer-4.1/qt-loadable-modules:
Python vtkSlicerDicomRtImportModuleLogic.dll vtkSlicerDoseComparisonModuleLogicPythonD.lib
qSlicerContoursModule.dll vtkSlicerDicomRtImportModuleLogic.lib vtkSlicerDoseComparisonModuleLogicPython.pyd
qSlicerContoursModule.lib vtkSlicerDicomRtImportModuleLogicPythonD.dll vtkSlicerDoseVolumeHistogramModuleLogic.dll
qSlicerDicomRtImportModule.dll vtkSlicerDicomRtImportModuleLogicPythonD.lib vtkSlicerDoseVolumeHistogramModuleLogic.lib
qSlicerDicomRtImportModule.lib vtkSlicerDicomRtImportModuleLogicPython.pyd vtkSlicerDoseVolumeHistogramModuleLogicPythonD.dll
qSlicerDoseAccumulationModule.dll vtkSlicerDoseAccumulationModuleLogic.dll vtkSlicerDoseVolumeHistogramModuleLogicPythonD.lib
qSlicerDoseAccumulationModule.lib vtkSlicerDoseAccumulationModuleLogic.lib vtkSlicerDoseVolumeHistogramModuleLogicPython.pyd
qSlicerDoseComparisonModule.dll vtkSlicerDoseAccumulationModuleLogicPythonD.dll vtkSlicerIsodoseModuleLogic.dll
qSlicerDoseComparisonModule.lib vtkSlicerDoseAccumulationModuleLogicPythonD.lib vtkSlicerIsodoseModuleLogic.lib
qSlicerDoseVolumeHistogramModule.dll vtkSlicerDoseAccumulationModuleLogicPython.pyd vtkSlicerIsodoseModuleLogicPythonD.dll
qSlicerDoseVolumeHistogramModule.lib vtkSlicerDoseComparisonModuleLogic.dll vtkSlicerIsodoseModuleLogicPythonD.lib
qSlicerIsodoseModule.dll vtkSlicerDoseComparisonModuleLogic.lib vtkSlicerIsodoseModuleLogicPython.pyd
qSlicerIsodoseModule.lib vtkSlicerDoseComparisonModuleLogicPythonD.dll

lib/Slicer-4.1/qt-scripted-modules:
DicomRtImportPlugin.py DicomRtImportPlugin.pyc

pinter

pinter

2012-10-15 11:09

developer   ~0006541

The issue Andras described is that by default, the DLLs coming from C++ source were deployed in the ${CMAKE_BINARY_DIR}/lib/Slicer-4.1/qt-loadable-modules/[Configuration], but the compiled python scripts (py and pyc files) were deployed in the ${CMAKE_CURRENT_BINARY_DIR}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR}, which is a completely different location and different from module to module.

Looking at the template Extensions\Testing\ScriptedLoadableExtensionTemplate\CMakeLists.txt it seems that this has changed, so that the destination directory is now ${CMAKE_BINARY_DIR}/${Slicer_QTSCRIPTEDMODULES_LIB_DIR} (just like I did recently in case of our python module).

Andras, I think the issue has been resolved, but not sooner than we used the template for our module, this is why it was inconsistent in our case. If you agree, we can close the issue.

lassoan

lassoan

2012-10-15 12:50

developer   ~0006550

The template is fixed, so I agree that this issue can be closed now.

I don't have rights to change the status from the current "feedback" to "closed", so someone with dev or admin rights have to do it.

jcfr

jcfr

2012-10-15 12:52

administrator   ~0006551

Re-open if there are still issues.

I also created an issue to track the fact a macro named "slicerMacroBuildScriptedModule" should be added. See 0002647

Issue History

Date Modified Username Field Change
2012-07-25 10:47 lassoan New Issue
2012-07-25 10:47 lassoan Status new => assigned
2012-07-25 10:47 lassoan Assigned To => jcfr
2012-07-25 15:38 jcfr Target Version => Slicer 4.3.0
2012-07-25 15:39 jcfr Status assigned => acknowledged
2012-10-15 06:58 pinter Note Added: 0006530
2012-10-15 10:50 jcfr Note Added: 0006540
2012-10-15 10:50 jcfr Status acknowledged => feedback
2012-10-15 11:09 pinter Note Added: 0006541
2012-10-15 12:50 lassoan Note Added: 0006550
2012-10-15 12:52 jcfr Note Added: 0006551
2012-10-15 12:52 jcfr Status feedback => resolved
2012-10-15 12:52 jcfr Fixed in Version => Slicer 4.2.0 - coming release
2012-10-15 12:52 jcfr Resolution open => fixed
2012-10-15 12:52 jcfr Relationship added related to 0002647
2012-10-15 12:58 lassoan Status resolved => closed