我对c++
一无所知。我安装了一些名为ITK
的软件包的两个版本。出于某种原因,4.8
版本在.cmake
和/usr/local/lib/cmake/ITK-4.8/UseITK.cmake
文件3.16
中有/usr/local/itk/lib/InsightToolkit/UseITK.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
版本?
答案 0 :(得分:2)
检查文件/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)
命令触发)只需将请求重定向到配置模式:
# 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。
答案 1 :(得分:1)
在CMake documentation之后,您可以请求找到特定版本的软件包。您需要更改edit_calendar_post_path(@calendar, post)
:
var value = 0xFFFF;
value = Convert.ToString(Convert.ToInt32(value.ToString(), 16), 2);
Console.WriteLine(value);
// 1100101010100110101
为:
CMakeLists.txt