【发布时间】:2023-03-21 21:40:01
【问题描述】:
我都试过了:
- 我使用 CMake 构建了 ITK 库,然后在 .pro 文件中手动链接了我的 HelloWorld.cxx,如下所示:
INCLUDEPATH += "/folder1/folder2/folder3/ITK-build/lib"
LIBS += /folder1/folder2/folder3/ITK-build/lib/
-libITKBiasCorrection-4.7/
-libITKBioCell-4.7/
-libITKCommon-4.7/
-libitkdouble-conversion-4.7/
-libITKDICOMParser-4.7/
etc.
但是,当我在 Qt Creator 中构建它时,它无法识别 #include "itkImage.h",因此无法编译...
- 我编写了一个 CMakeLists.txt 文件并在 Qt Creator 中使用 File > Open File 或 Project 调用它。我的 CMakeLists.txt 如下所示:
PROJECT(HelloWorld)
FIND_PACKAGE (ITK REQUIRED)
IF (ITK_FOUND)
INCLUDE( ${ITK_USE_FILE} )
ENDIF(ITK_FOUND)
ADD_EXECUTABLE(HelloWorld HelloWorld.cxx)
TARGET_LINK_LIBRARIES (HelloWorld /folder1/folder2/folder3/ITK-build/lib)
我的 HelloWorld.cxx 如下所示(来自 www.itk.org 的给定示例):
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkGradientMagnitudeImageFilter.h"
int main( int argc, char **argv) {
typedef itk::Image <unsigned short,2> ImageType;
typedef itk::ImageFileReader <ImageType> ReaderType;
typedef itk::GradientMagnitudeImageFilter <ImageType,ImageType> FilterType;
ReaderType::Pointer reader = ReaderType::New();
FilterType::Pointer filter = FilterType::New();
reader->SetFileName(argv[1]);
filter->SetInput(reader->GetOutput() );
filter->Update();
return 0;
}
我做错了什么?感谢您的帮助。
【问题讨论】:
-
INCLUDEPATH += "/folder1/folder2/folder3/ITK-build/lib"你确定itkImage.h在这个文件夹中吗?通常 h 文件位于include文件夹中。LIBS += /folder1/folder2/folder3/ITK-build/lib/这里使用目录而不是lib文件。 -
/folder1/folder2/folder3/ITK-build/lib在这个文件夹中只有很多 .a 文件。我搜索了所有文件夹,ITK-build文件夹中没有include文件夹。目录而不是lib文件是什么意思? Lib 是一个包含 .a 文件的目录。谢谢。 -
搜索
itkImage.h不知道在哪里,如果在lib文件夹下,你的INCLUDEPATH参数就OK了。关于 LIBS - 它应该包含库名称而不是文件夹。 -
我在
/folder1/folder2/folder3/ITK-build文件夹中使用了find . ".h"。没有一个 .h 文件。我不明白这个。 -
ITK-build看起来像一个只包含 makefile 的构建文件夹。 ITK 源文件应该在其他地方,你应该知道它们在哪里。可能是您的秘密文件夹 1、文件夹 2...文件夹。或者在系统范围的包含文件夹之一中,如果安装了 ITK 标头。
标签: c++ cmake qt-creator itk