使用CMake和ITK错误进行编译

问题描述 投票:0回答:2

我正在尝试使用CMake和ITK从here编译一些代码,但我遇到了一个错误。

在CMake中,我选择/ utilities / ITKImageSeriesToVolume中的源文件夹和/ utilities / ITKImageSeriesToVolume / build中的build文件夹。但是这给了我一个错误:

CMake Error at CMakeLists.txt:42 (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.

我试图设置一个CMAKE_PREFIX_PATH环境变量,该变量指向包含ITKConfig.cmake的ITK的根文件夹,但得到相同的错误。

希望有人可以提前帮助,谢谢。

编辑:将ITK_DIR设置为根ITK文件夹后,我得到:

CMake Error at D:/Apps/InsightToolkit/ITK/ITKConfig.cmake:48 (include):
include could not find load file:

D:/Apps/InsightToolkit/Build/ITKTargets.cmake
Call Stack (most recent call first):
CMakeLists.txt:42 (find_package)


CMake Error at D:/Apps/InsightToolkit/Source/CMake/ITKModuleAPI.cmake:56 (message):
No such module: "ITKDoubleConversion"
Call Stack (most recent call first):
D:/Apps/InsightToolkit/Source/CMake/ITKModuleAPI.cmake:26 (itk_module_load)
D:/Apps/InsightToolkit/Source/CMake/ITKModuleAPI.cmake:84 (_itk_module_config_recurse)
D:/Apps/InsightToolkit/ITK/ITKConfig.cmake:68 (itk_module_config)
CMakeLists.txt:42 (find_package)
c++ compilation cmake environment-variables itk
2个回答
0
投票

它有一个简单的修复,如ERROR“将ITK”的安装前缀添加到CMAKE_PREFIX_PATH或将“ITK_DIR”设置为包含上述文件之一的目录。如果“ITK”提供单独的开发包或SDK,请确保它已经安装完毕。“

确保您的CMAKE_PREFIX_PATH和ITK指向您的ITK构建目录。这假设您已经使用Cmake至少构建过一次ITK。

步骤1)创建ITK源文件夹。

2)创建ITK构建文件夹。

3)运行CMake并选择源和构建文件夹。

4)选择相应的编译器,如果有任何编译器问题,请参阅此讨论。

5)配置并生成cmake。

6)使用相应的IDE打开构建文件夹中的构建文件(如果使用visual studio编译器,则使用.sln文件)。

7)在visual studio上构建一次。

8)现在,您的新项目使用相同的步骤,并将CMAKE_PREFIX_PATH和ITK指向您的ITK构建目录。

一切都应该有效。祝好运!!!


-1
投票

您的ITK构建似乎部分被打破。你能尝试重建吗?如果这没有帮助,请查看ITK_USE_SYSTEM_DOUBLECONVERSION是否为ON。这意味着不要构建ITK附带的DoubleConversion库,而是使用已经存在于系统中的DoubleConversion库。如果它不存在,则表示您遇到问题。

此外,除非ITK_BUILD_DEFAULT_MODULES为ON,否则您必须专门打开要编译的每个模块或模块组。在这种情况下,请打开ITKDoubleConversion以及该代码所需的任何其他模块。

© www.soinside.com 2019 - 2024. All rights reserved.