我一直在尝试在新PC上设置ITK,并且当我在项目上运行CMake时遇到了问题。
我下载了ITK 4.8.2,将其解压缩,配置了CMake并一如既往地生成。但是,这次CMake会发出以下错误:
CMake Error at CMakeLists.txt:4 (find_package):
By not providing "FindITK.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "ITK", but
CMake did not find one.
Could not find a package configuration file provided by "ITK" with any of
the following names:
ITKConfig.cmake
itk-config.cmake
Add the installation prefix of "ITK" to CMAKE_PREFIX_PATH or set "ITK_DIR"
to a directory containing one of the above files. If "ITK" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
CMakeLists.txt文件非常好,只是为了确保正确设置cmake / ITK:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(ITKTest)
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
add_executable(ITKTest main.cpp)
target_link_libraries(ITKTest ${ITK_LIBRARIES})
我添加了CMAKE_PREFIX_PATH
和ITK_DIR
作为附加条目,后者指向ITK文件夹的位置。但问题仍然存在。
至于它说它无法找到的文件,我设置cmake以构建二进制文件的文件夹中存在一个文件。在我的例子中,两个目录中有两个文件:
--E:\ITK\InsightToolkit-4.8.2-build\ITKConfig.cmake
--E:\ITK\InsightToolkit-4.8.2-build\CMakeFiles\ITKConfig.cmake
答案 0 :(得分:3)
在CMake 3.0中删除了FindITK.cmake文件。
<强> FindITK 强>
该模块已不存在。此模块存在于3.1之前的CMake版本中,但仅限于此 提供
find_package(ITK NO_MODULE)
周围的薄包装 使用长期过时约定的项目的兼容性。现在find_package(ITK)
会直接搜索ITKConfig.cmake
。
来源:https://cmake.org/cmake/help/v3.4/module/FindITK.html
因此,CMake会查找ITKConfig.cmake
,该ITKConfig.cmake
必须安装到默认位置,或者您必须将NSDictionary
的路径添加到CMAKE_PREFIX_PATH
。
答案 1 :(得分:2)
我找到了成功构建测试项目的方法(以及我目前正在处理的另一个项目)。在构建项目时,我将ITK构建文件夹的位置指定为参数:
cmake -DITK_DIR=E:/ITK/Insight-Toolkit-4.8.2 CMakeLists.txt
我仍然不确定为什么我以前从未这样做过,以及为什么在我在cmake GUI中配置ITK后ITK_DIR变量不会保留,但这确实允许我构建项目。
答案 2 :(得分:0)
这些口味或其他口味都没有为我工作,好像从未定义过ITK_DIR:
cmake -DITK_DIR=C:\Users\user\InsightToolkit-5.0.0_bld C:\Users\user\HelloWorldITK cmake
-DITK_DIR=C:\\Users\\user\\InsightToolkit-5.0.0_bld C:\Users\user\HelloWorldITK cmake
-DITK_DIR=C:/Users/user/InsightToolkit-5.0.0_bld C:\Users\user\HelloWorldITK
但是,将其添加到CMakeLists.txt可以解决问题:
SET(ITK_DIR "C:\\Users\\user\\InsightToolkit-5.0.0_bld")