使用cmake builder

时间:2015-07-26 13:07:52

标签: visual-studio-2012 cmake itk

我正在尝试构建itk,但是当我尝试使用示例程序时,我收到以下错误:

  

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ xutility(2761):警告C4996:' std :: _ Fill_n':带有可能不安全的参数的函数调用 - 此调用依赖于调用者来检查传递的值是否正确。要禁用此警告,请使用-D_SCL_SECURE_NO_WARNINGS。请参阅有关如何使用Visual C ++' Checked Iterators'   2 - ; C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ xutility(2747):参见' std :: _ Fill_n'

的声明

或像这样的错误:

  

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ xutility(2176):警告C4996:' std :: _ Copy_impl':带有可能不安全的参数的函数调用 - 此调用依赖于调用者来检查传递的值是否正确。要禁用此警告,请使用-D_SCL_SECURE_NO_WARNINGS。请参阅有关如何使用Visual C ++' Checked Iterators'   2 - ; C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ xutility(2157):参见' std :: _ Copy_impl'的声明   2 - ; c:\ users \ ayelet \ downloads \ insighttoolkit-4.8.0 \ modules \ core \ common \ include \ itkImportImageContainer.hxx(72):参见函数模板实例化' _OutIt std :: copy(_InIt,_InIt, _OutIt)'正在编制

基本上,检查迭代器似乎存在问题。我了解了检查迭代器的内容并最终得到了这个链接:https://msdn.microsoft.com/en-us/library/hh697468(v=vs.110).aspx。 我尝试在实际程序中使用define ITERATOR_DEBUG_LEVEL,但这并没有帮助。 我尝试使用ITERATOR_DEBUG_LEVEL = 2和示例程序编译itk库。为此,我在cmake_cxx_flags中写了/ D_ITERATOR_DEBUG_LEVEL = 2,在cmake-gui写了cmake_c_flags。我仍然遇到同样的错误。

我想过尝试在itk cmakelists中的某处粘贴_ITERATOR_DEBUG_LEVEL,但整个结构看起来很复杂,所以我不知道该把它放在哪里。

我不确定我在cmake-gui的语法是否正确,因为我无法找到一个在cmake-gui中为特定值设置选项的示例,所以我不知道如果" ="是正确的语法。(我​​只能找到设置选项 - 比如/ DWIN32)而且还有其他一些我做错了 - 我只是不知道。

任何人都知道我能做什么?

1 个答案:

答案 0 :(得分:0)

这类消息通常来自混合版本/调试库和可执行文件,并且不需要手动设置_ITERATOR_DEBUG_LEVEL。

我认为您在Debug和Release版本中都构建了ITK(通过选择Visual Studio菜单中的下拉列表)。 是否有可能在同一文件夹中同时安装了该版本?在这种情况下,第二个覆盖了第一个(不幸的是,ITK调试库在名称中没有_d后缀,它们必须与发布库位于不同的文件夹中)。

在您的示例程序中,当您运行cmake并且要求您输入itk目录时,请放置itk构建目录(而不是安装目录)。 要确切了解发生了什么,您可以暂时移动您不想包含的版本的文件夹。