加载包时c ++版本冲突
c++ conflicting versions when loading package
我对c++
一无所知。我安装了一些名为 ITK
的软件包的两个版本。由于某种原因,4.8
版本在 /usr/local/lib/cmake/ITK-4.8/UseITK.cmake
和 3.16
文件 /usr/local/itk/lib/InsightToolkit/UseITK.cmake
中有其 .cmake
文件。
所以现在,我正在尝试构建一些需要 3.16
版本的项目,该版本在其 CMakeLists.txt
中包含:
find_package(ITK)
...
include( ${ITK_USE_FILE} )
但 ${ITK_USE_FILE}
是 /usr/local/lib/cmake/ITK-4.8/UseITK.cmake
。
(我的理解是 ITK 使用 ITK_USE_FILE
作为 Package_INCLUDE_DIR
变量)。如何让 find_package
指向 3.16
版本?
在 CMake documentation 之后,您可以请求找到特定版本的包。您需要将 CMakeLists.txt
更改为:
find_package(ITK)
至:
find_package(ITK 3.16)
检查文件 /usr/local/itk/lib/InsightToolkit/ITKConfig.cmake
是否存在并在查找包之前将 ITK_DIR
变量设置为 /usr/local/itk/lib/InsightToolkit
:
# CMakeLists.txt
...
set(ITK_DIR /usr/local/itk/lib/InsightToolkit)
find_package(ITK)
或者,如果您希望您的项目也能在其他计算机上运行,请将此变量传递给 cmake
调用:
cmake -DITK_DIR=/usr/local/itk/lib/InsightToolkit (...)
(CMakeLists.txt
在这种情况下保持不变)。
根据消息来源,FindITK.cmake
(由 find_package(ITK)
命令触发)只是将请求重定向到 Config 模式:
# FindITK.cmake
...
find_package(ITK ${_ITK_REQUIRED} ${_ITK_QUIET} NO_MODULE
NAMES ITK InsightToolkit
CONFIGS ITKConfig.cmake
)
但不会将 VERSION
参数传递给它。这就是设置版本不起作用的原因。
设置ITK_DIR
强制CMake首先在给定目录下搜索ITKConfig.cmake
。可以在 find_package documentation.
中找到更多详细信息
我对c++
一无所知。我安装了一些名为 ITK
的软件包的两个版本。由于某种原因,4.8
版本在 /usr/local/lib/cmake/ITK-4.8/UseITK.cmake
和 3.16
文件 /usr/local/itk/lib/InsightToolkit/UseITK.cmake
中有其 .cmake
文件。
所以现在,我正在尝试构建一些需要 3.16
版本的项目,该版本在其 CMakeLists.txt
中包含:
find_package(ITK)
...
include( ${ITK_USE_FILE} )
但 ${ITK_USE_FILE}
是 /usr/local/lib/cmake/ITK-4.8/UseITK.cmake
。
(我的理解是 ITK 使用 ITK_USE_FILE
作为 Package_INCLUDE_DIR
变量)。如何让 find_package
指向 3.16
版本?
在 CMake documentation 之后,您可以请求找到特定版本的包。您需要将 CMakeLists.txt
更改为:
find_package(ITK)
至:
find_package(ITK 3.16)
检查文件 /usr/local/itk/lib/InsightToolkit/ITKConfig.cmake
是否存在并在查找包之前将 ITK_DIR
变量设置为 /usr/local/itk/lib/InsightToolkit
:
# CMakeLists.txt
...
set(ITK_DIR /usr/local/itk/lib/InsightToolkit)
find_package(ITK)
或者,如果您希望您的项目也能在其他计算机上运行,请将此变量传递给 cmake
调用:
cmake -DITK_DIR=/usr/local/itk/lib/InsightToolkit (...)
(CMakeLists.txt
在这种情况下保持不变)。
根据消息来源,FindITK.cmake
(由 find_package(ITK)
命令触发)只是将请求重定向到 Config 模式:
# FindITK.cmake
...
find_package(ITK ${_ITK_REQUIRED} ${_ITK_QUIET} NO_MODULE
NAMES ITK InsightToolkit
CONFIGS ITKConfig.cmake
)
但不会将 VERSION
参数传递给它。这就是设置版本不起作用的原因。
设置ITK_DIR
强制CMake首先在给定目录下搜索ITKConfig.cmake
。可以在 find_package documentation.