# Try to find IntelIPP
# Once done, this will define
#
# Ipp_FOUND - system has IntelIPP
# Ipp_INCLUDE_DIR - the IntelIPP include directories
# Ipp_LIBRARY - link these to use IntelIPP
include(LibFindMacros)
set(IPP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../libs/intel/linux/intel_ipp)
# Include dir
find_path(Ipp_INCLUDE_DIR
NAMES ipp.h
PATHS ${IPP_ROOT_DIR}/include
)
find_library(Ipp_IRC_LIB
NAMES irc
PATHS ${IPP_ROOT_DIR}/lib/ia32
)
find_library(Ipp_MAT_LIB
NAMES ippm
PATHS ${IPP_ROOT_DIR}/lib/ia32
)
list(APPEND Ipp_LIBRARY ${Ipp_IRC_LIB} ${Ipp_MAT_LIB} )
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set Ipp_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(Ipp DEFAULT_MSG
Ipp_LIBRARY Ipp_INCLUDE_DIR)
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library
set(Ipp_INCLUDE_DIRS ${Ipp_INCLUDE_DIR})
set(Ipp_LIBRARIES ${Ipp_LIBRARY})
Мой скрипт FindIpp.cmake показан выше. В Windows я получаю -- Could NOT find IPP (missing: IPP_INCLUDE_DIR IPP_LIBRARY).
Я тестировал это в Linux, и он работает без проблем. В обоих случаях я пытаюсь выполнить кросс-компиляцию с помощью набора инструментов QNX Momentics.
- $ {CMAKE_CURRENT_SOURCE_DIR} - это расположение «корневого» скрипта, который включает (FindIpp).
- Я просмотрел вывод $ {CMAKE_CURRENT_SOURCE_DIR} и вывод относительных путей, чтобы убедиться, что файлы и папки существуют в указанных путях. $ {CMAKE_CURRENT_SOURCE_DIR} /../ libs / intel отображается как C: /../ libs / intel.
- Я использую CMake 3.5 в Linux и CMake 3.6.1 в Windows 7.
- В командной строке я мог без проблем ввести cd c: / libs / intel.
- Я попытался жестко закодировать путь IPP_ROOT_DIR к
set(IPP_ROOT_DIR C:/libs/intel/linux/intel_ipp)
, попытался добавить кавычки вокруг пути, добавилCACHE PATH "Description"
к вызовуset
. Ничего из этого не сработало. Я пробовал -GNinja, -G "MinGW Makefiles" и -G "Unix Makefiles". Еще придумал:
-- Could NOT find IPP (missing: IPP_INCLUDE_DIR IPP_LIBRARY) -- Could NOT find Mkl (missing: Mkl_LIBRARY Mkl_INCLUDE_DIR) -- Could NOT find Boost (missing: Boost_LIBRARY Boost_INCLUDE_DIR) -- Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY)
Копирование и вставка содержимого из отдельных файлов, таких как FindIpp.cmake, в основной файл CMakeLists.txt находит библиотеки, но не путь для включения. Теперь я также добавил
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SRC_DIR}/CMake/Modules)
, чтобы найти файлы моего модуля. Если я удалю эту строку, cmake выдаст ошибкуinclude(FindIpp)
. Есть ли что-нибудь очевидное, что я делаю не так? Кроме того, можно ли так написать find_library или find_path? Спасибо
find_library
вызовом, протестируйте этот вызов напрямую с жестко запрограммированными значениями. В этом случае нет необходимости отлаживать весьFind*.cmake
скрипт. Что касается кросс-компиляции, проверьте, какие пути инструментальной цепочки позволяет искать: основные, целевые или и то, и другое. См. Описание переменной CMAKE_FIND_ROOT_PATH_MODE_LIBRARY. - person Tsyvarev   schedule 02.08.2016set(IPP_ROOT_DIR "C:/libs/intel/linux/intel_ipp") message(STATUS "IPP_ROOT_DIR: " ${IPP_ROOT_DIR})
не печатает IPP_ROOT_DIR в моем выводе. - person Sriram   schedule 03.08.2016find_*
команды? Попробуйте создать проект изначально (например, с помощью компилятора Visual Studio или с помощью gcc под MinGW). Еслиfind_path
работает в такой сборке, то ваш набор инструментов однозначно на это повлияет. - person Tsyvarev   schedule 03.08.2016