Hi everyone
I want to build slicer with an Extension(MABMIS) but I have errors. the system specification is:
Windows 7.
Visual studio 2015 x64.
cmake 3.12 x64.
The steps I did are as follows:
1- As I want to build an extension(MABMIS), I put it in D:\S\Modules\CLI folder and added its name to D:\S\Modules\CLI\CMakeLists.txt .
2- I configured the source Successfully using CMake GUI and adding QT5.1 path variable and also turning SimpleITK bool to off. Then I generated it and closed the Cmake UI.
3- As there were no Slicer.exe in S4D\Slicer-build folder, I Open Slicer.sln in S4D directory using Visual studio and built All_Build in debug mode.
The error is:
49> CMake Error at Modules/CLI/MultiAtlas/CMakeLists.txt:12 (find_package):
49> By not providing "FindSlicer.cmake" in CMAKE_MODULE_PATH this project has
49> asked CMake to find a package configuration file provided by "Slicer", but
49> CMake did not find one.
49>
49> Could not find a package configuration file provided by "Slicer" with any
49> of the following names:
49>
49> SlicerConfig.cmake
49> slicer-config.cmake
49>
49> Add the installation prefix of "Slicer" to CMAKE_PREFIX_PATH or set
49> "Slicer_DIR" to a directory containing one of the above files. If "Slicer"
49> provides a separate development package or SDK, be sure it has been
49> installed.
49>
49>
49> -- Configuring incomplete, errors occurred!
49> See also "D:/S4D13/Slicer-build/CMakeFiles/CMakeOutput.log".
49> See also "D:/S4D13/Slicer-build/CMakeFiles/CMakeError.log".
49>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error
MSB6006: "cmd.exe" exited with code 1.
50>------ Build started: Project: ALL_BUILD, Configuration: Debug x64 ------
50> Building Custom Rule D:/S4/CMakeLists.txt
50> CMake does not need to re-run because D:/S4D13/CMakeFiles/generate.stamp is up-to-date.
========== Build: 48 succeeded, 2 failed, 0 up-to-date, 0 skipped ==========
Commit 1f54e8d, which is referenced in the extensions index is severely out of date. PR4, which is based on my fork, was building with 4.8.1 in February.
@rasoul Your build process sounds good. It looks like Slicer failed to compile for some reason, and then FindSlicer call in MABMIS failed. You could
look higher up in the build log for errors
build solution again - that should try to build only the projects which failed to build the first time and the build log will be much shorter, making errors easier to spot
build Slicer.sln in S4D\Slicer-build (the so called inner build) - this should give more detailed errors related to building Slicer itself
Thanks @fedorov and @dzenanz. I built it again and the error is the same one. I am building it again with Slicer 4.8.1.
What wondering me is that there is no slicer.sln in S4D\Slicer-build directory. Have I forgotten something during my building?
Building with slicer 4.8.1 faced with error. But now the error changed to this one.
49> CMake Error at Modules/CLI/MultiAtlas/CMakeLists.txt:13 (include):
49> include called with wrong number of arguments. include() only takes one
49> file.
49> -- ITKIOImageBaseITKCommonitksysitkvnl_algoitkvnlitkv3p_netlibitknetlibitkvclITKTransformITKStatisticsitkNetlibSlatecITKIOTransformBaseITKSpatialObjectsITKPathITKMetaIOD:/S481B/zlib-install/lib/zlib.libITKTransformFactoryITKIOXML
49> -- Configuring SEM CLI module: IGR3D_MABMIS_Training
49> -- Configuring SEM CLI module: IGR3D_MABMIS_Testing
49> -- Configuring SEM CLI module: IGR3D_MABMIS_Direct_Invoke
49> CMake Error at Modules/CLI/MultiAtlas/CMakeLists.txt:75 (include):
49> include called with wrong number of arguments. include() only takes one
49> file.
49>
49> CMake Error at Modules/CLI/MultiAtlas/CMakeLists.txt:76 (include):
49> include called with wrong number of arguments. include() only takes one
49> file.
To avoid modifying Slicer source tree, there are few other approaches:
build against Slicer build tree
An alternative solution could be to build the extension against your Slicer build tree configuring the extension passing -DSlicer_DIR:PATH=C:\path\to\Slicer-Superbuild\Slicer-build, and then starting Slicer specifying --launcher-additional-settings and --additional-module-paths
In the recent Slicer, a launcher is setup for you in the extension build directory.