# 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。
- 我在 Linux 上使用 CMake 3.5,在 Windows 7 上使用 CMake 3.6.1。
- 在 cmd 提示符下,我可以毫无问题地输入“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 的方法吗?谢谢