Closed romainVala closed 6 years ago
The most recent ipp 2017 version might have different structure for libraries. To compile with this ipp version, you need to change FindIPP.cmake file and substitute ipps_l, ippvm_l and ippcore_l with their equivalent libraries in 2017 version.
Hello
Yes I finally succeed to make it compile. I indeed had to change the FindIPP.cmake. The library have the same name without the _l. (I also had to change the IF ELESE ENDIF test condition
Chears Romain
I had the same problem. Unfortunately, the proposed change probably breaks compatibility with IPP 7.X. In addition, on my system (Ubuntu 14.04), IPP 2017 installs in /opt/intel/ipp
. Using this as IPP_ROOT
precludes using the directory name as version check. It would be great if there was another way of checking for the IPP version, but I'm not knowledgeable enough in CMake to come up with one.
My current workaround is similar to that proposed by @romainVala: I use the full path which /opt/intel/ipp
points to: IPP_ROOT=/opt/intel/compilers_and_libraries_2017.2.174/linux/ipp/
and then search for "2017
" - "compilers
" works as well.
There was a second issue I encountered, related to VTK. I do not have VTK on my system and tried to build without. As a result, ${VTK_USE_FILE}
is empty. This creates an error with my version of cmake
(2.8.12.2), when calling include(${VTK_USE_FILE})
at the top of renderer/CMakeLists.txt
:
CMake Error at renderer/CMakeLists.txt:2 (include):
include called with wrong number of arguments. Include only takes one
file.
My workaround is to put the include statement after the if (VTK_FOUND)
:
if (VTK_FOUND)
include(${VTK_USE_FILE})
add_subdirectory(DoKSpaceTrajVTK)
else (VTK_FOUND)
MESSAGE("VTK not found. MRiLab DoKSpaceTrajVTK will not be compiled.")
endif (VTK_FOUND)
This seems to work on my machine, however, I am not familiar with CMake, and have no clue if this is legal in case there is a VTK installation, or if includes must happen at the top level of each file.
I installed MRiLab on a Windows computer yesterday, and the difficulties with the CMake files are essentially the same. Other than that, the current version of IPP (2017 Update 3) works fine with this version of MRiLab.
Hi all,
Unfortunately I am also unable to get MRiLab compile on linux. This is the cmake error message I get:
-- MATLAB_ROOT: /usr/local/MATLAB/R2016b/ -- Matlab mex will be used -- IPP_ROOT (IPP 6): /opt/intel/ipp -- Could NOT find IPP (missing: IPP_LIBRARIES)
I have tried the suggested fixes to no avail. I checked the library files and in my version of IPP the names are not ipps_l etc but libipps instead. I changed the library file names to that too and that did not work. Also, I too could not find ippsemergedem64t.
This seems to be a pretty common problem so would it be possible for the author update the code to use the libraries from IPP (2017 Update 3) which seems to be the version that most people have access to right now?
Hello if it can help, here are the diff I made to FindIPP.cmake
git diff Lib/src/cmake/FindIPP.cmake diff --git a/Lib/src/cmake/FindIPP.cmake b/Lib/src/cmake/FindIPP.cmake index 5494feb..1b30373 100644 --- a/Lib/src/cmake/FindIPP.cmake +++ b/Lib/src/cmake/FindIPP.cmake @@ -88,7 +88,7 @@ ELSE( "$ENV{IPP_ROOT}" STREQUAL "" )
ELSE(WIN32)
IF ($ENV{IPP_ROOT} MATCHES .composer.) #IPP 7.X
IF ($ENV{IPP_ROOT} MATCHES .compiler.) #IPP 7.X
FIND_PATH(IPP_INCLUDE_DIR ipp.h
PATHS $ENV{IPP_ROOT}/include $ENV{IPP_ROOT}/../include /usr/include /usr/local/include
@@ -97,15 +97,15 @@ ELSE( "$ENV{IPP_ROOT}" STREQUAL "" )
SET(IPP_LIB_PATH $ENV{IPP_ROOT}/lib/intel64/)
FIND_LIBRARY( IPP_S_LIBRARY
NAMES "ipps_l"
NAMES "ipps" PATHS ${IPP_LIB_PATH})
FIND_LIBRARY( IPP_VM_LIBRARY
NAMES "ippvm_l"
NAMES "ippvm" PATHS ${IPP_LIB_PATH})
FIND_LIBRARY( IPP_CORE_LIBRARY
NAMES "ippcore_l"
NAMES "ippcore" PATHS ${IPP_LIB_PATH})
SET(IPP_LIBRARIES
@@ -115,7 +115,7 @@ ELSE( "$ENV{IPP_ROOT}" STREQUAL "" ) ) MESSAGE (STATUS "IPP_ROOT (IPP 7): $ENV{IPP_ROOT}")
ELSE ($ENV{IPP_ROOT} MATCHES .composer.) #IPP 6.X
ELSE ($ENV{IPP_ROOT} MATCHES .compiler.) #IPP 6.X
FIND_PATH(IPP_INCLUDE_DIR ipp.h
PATHS $ENV{IPP_ROOT}/include $ENV{IPP_ROOT}/../include /usr/include /usr/local/include
@@ -159,7 +159,7 @@ ELSE( "$ENV{IPP_ROOT}" STREQUAL "" ) )
MESSAGE (STATUS "IPP_ROOT (IPP 6): $ENV{IPP_ROOT}")
ENDIF ($ENV{IPP_ROOT} MATCHES .composer.)
ENDIF ($ENV{IPP_ROOT} MATCHES .compiler.)
ENDIF(WIN32)
@@ -170,4 +170,4 @@ IF(IPP_INCLUDE_DIR AND IPP_LIBRARIES) ENDIF(IPP_INCLUDE_DIR AND IPP_LIBRARIES)
INCLUDE( "FindPackageHandleStandardArgs" ) -FIND_PACKAGE_HANDLE_STANDARD_ARGS("IPP" DEFAULT_MSG IPP_LIBRARIES IPP_INCLUDE_DIR) \ No newline at end of file +FIND_PACKAGE_HANDLE_STANDARD_ARGS("IPP" DEFAULT_MSG IPP_LIBRARIES IPP_INCLUDE_DIR)
Hello
I first try the code with a great interest, (but with the given precompiled mex) but I need now to re-compiler them in order to use a more powerfull graphic card
I am working on a linux ubuntu 16.04. I install the l_ipp_2017.2.174
the cmake fonction always tel me : -- MATLAB_ROOT: /export/data/applications/matlab/upmc/R2016b/ -- Matlab mex will be used -- IPP_ROOT (IPP 6): /opt/intel/ipp/ -- Could NOT find IPP (missing: IPP_LIBRARIES) ...
so no compilation is available
I try to specify a bash varaible IPP_LIBRARIES, but it does not changes
Any idea ?
I am not expert in cmake files, but I had a quick look to the file ./cmake/FindIPP.cmake you search for instance for ippsemergedem64t, but I do not find such a file in /opt/intel
Many thanks
Romain