1. mac中使用vscode配置itk
前提条件,已经配置好了C++环境,如果没有配置后,可以参考另一篇博客:mac下vscode配置c++环境
1.1 下载安装配置CMake
1.1.1 下载
下载链接:https://cmake.org/download/
我直接下载了3.22.3
1.1.2 安装
直接下载dmg文件,双击安装,主要是保证把CMake拖到APP目录中去。打开就是一个界面: 这只能表明安装好了,但是去终端输入cmake --version ,提示没有这个命令,所以还需要手动吧cmake加入到系统目录。
1.1.3 配置路径
根据:https://cmake.org/install/
直接在打开的cmake界面中,找到菜单栏->Tools ->How to install For Command Line Use ,截图如下: 如果是zsh的shell,则需要:
vim ~/.zshrc
export PATH="/Applications/CMake.app/Contents/bin":"$PATH"
source ~/.zshrc
~ ? cmake --version
cmake version 3.22.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
1.2 配置编译ITK
这里演示使用CMake界面运行的效果。按照最简单的方式去配置,没有什么高级配置
第一步,选择源代码目录和输出目录 最好保证是两个不同的目录
第二步,开始确认configure 别的不用点,点击Configure ,会让你选择编译器,就选默认的本地编译器就可以。然后就会弹出很多文字,类似下面这个。 最后提示Configuring done ,没有报错,就说明成功了。
- 但是此时还是有很多是报红的配置(红色也就是高亮),之前说过,需要一直
Configure 直到没有新的配置出现,即高亮为止。 - 因此再次按下
Configure 按键,此时就会得到类似下面的界面 - 没有高亮的配置项后,就可以开始编译了
第三步,开始生成配置文件 点击Generate 按钮,就会开始生成,最后提示Generating done
第四步,开始编译 在命令行中,切换到二进制目录(即输出的目录,例如我上面是ITK-build),然后运行make 即可。
会显示类似下面的输出,我从4:17编译到4:35,大约18分钟 编译成功,最后会显示
1.3 第一个ITK例子
1.3.1 cxx文件和CMakeLists.txt文件内容
文件结构:
|--project
|--HelloWorld
|--CMakeLists.txt
|--HelloWorld.cxx
|--helloworld_build
可以直接去ITK的下载文件夹中找到InsightToolkit-5.2.1/Examples/Installation ,其中就有CMakeLists.txt 和HelloWorld.cxx 这两个文件
或者也可以复制以下内容,自己新建文件
HelloWorld.cxx文件内容:
#include "itkImage.h"
#include <iostream>
int main()
{
typedef itk::Image< unsigned short, 3 > ImageType;
ImageType::Pointer image = ImageType::New();
std::cout << "Hello ITK World !" << std::endl;
return 0;
}
CMakeLists.txt文件内容:
cmake_minimum_required(VERSION 2.8)
project(HelloWorld)
# Find ITK.
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
add_executable(HelloWorld HelloWorld.cxx )
target_link_libraries(HelloInsight ${ITK_LIBRARIES})
1.3.2 配置、编译、运行
还是和以前一样,选择源文件和编译目标文件夹。
注意:由于在ITK编译的时候没有选择CMAKE_PREFIX_PATH ,因此ITK_DIR这个参数默认值是Not Found ,需要自己手动填上之前ITK编译的结果目录
然后先点击Configure ,显示Configuring done ;再点击Generate ,显示Generating done 。如下 此时,已经生成好了,可以看到在helloworld_build 目录中,有:
.
├── HelloWorld
│ ├── CMakeLists.txt
│ └── HelloWorld.cxx
└── helloworld_build
├── CMakeCache.txt
├── CMakeFiles
├── HelloWorld
├── ITKFactoryRegistration
├── Makefile
└── cmake_install.cmake
切换到helloworld_build 目录中,运行./HelloWorld ,就可以看到如下结果啦。
不要纠结于VScode的CMake插件等,不需要使用那些工具。
参考:
2. mac下报错
2.1 Could not find a package configuration file provided by “ITKInternalEigen3”
找不到文件,完整错误信息如下:
CMake Warning at CMake/itkExternal_Eigen3.cmake:59 (find_package):
By not providing "FindITKInternalEigen3.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"ITKInternalEigen3", but CMake did not find one.
Could not find a package configuration file provided by "ITKInternalEigen3"
with any of the following names:
ITKInternalEigen3Config.cmake
itkinternaleigen3-config.cmake
Add the installation prefix of "ITKInternalEigen3" to CMAKE_PREFIX_PATH or
set "ITKInternalEigen3_DIR" to a directory containing one of the above
files. If "ITKInternalEigen3" provides a separate development package or
SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:534 (include)
CMake Error at CMake/itkExternal_Eigen3.cmake:61 (message):
ITKInternalEigen3 configuration faileed
REPORT:
CMake Error: The source directory
"/Users/huangshan/Documents/microport/InsightToolkit-5.2.1/Modules/ThirdParty/Eigen3/src/itkeigen"
does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Call Stack (most recent call first):
CMakeLists.txt:534 (include)
2.1.? 很low的错误原因(解决)
报错信息中有一句(主要是最后的REPORT信息): CMake Error: The source directory "/Users/huangshan/Documents/microport/InsightToolkit-5.2.1/Modules/ThirdParty/Eigen3/src/itkeigen" does not exist.
查看自己的本地文件夹,发现没有Modules 这个文件夹,去github上去看,点击这里,github上有Modules 这个文件夹。
- 重新解压下载的安装包
- 发现了
Modules 文件夹,解决
网上也有这样的问题,但是解决方案似乎都比较复杂??有时候还是要靠自己。
例如:Github issue:ITK 5.1.0 : Can’t build because of ITKInternalEigen3 #1888
2.1.X 无效解决
大概猜测了一下,上述信息提到 this project has asked CMake to find a package configuration file provided by "ITKInternalEigen3", but CMake did not find one.
也就是说,有可能在命令行调用了cmake,但是我上面只配置了zsh,而没有配置bash,可能是命令行调用的时候,没有找到cmake。
在mac中,不是vim ~/.bashrc ,而是vim ~/.bash_profile 。 找到用户的home目录,command+shift+。 这三个键一起按,就是显示或者关闭显示 隐藏文件夹,就可以看到.bash_profile 文件了
vim ~/.bash_profile
export PATH="/Applications/CMake.app/Contents/bin":"$PATH"
source ~/.bash_profile
cmake --version
参考:mac安装了cmake: command not found 但是没有解决,同时我发现,shell的类型是可以设置的,而且默认使用的就是zsh
参考:
5. 其他文档
5.1 ITK
参考:
5.2 C++
C++ Programming Language
Microsoft C++, C, and Assembler documentation
C++ language documentation
根据where is the official c++ documentation [closed],C++的官方文档其实是: ISOCPP
4.3 cmake
参考:
|