.net - C++/CLI 和 CMake

标签 .net c++-cli cmake

我正在尝试使用 cmake 设置 C++/CLI 项目。我在 Visual Studio 2010 上已经成功地做到了这一点,但我现在正在使用需要 Visual Studio 2008 的旧解决方案。在 Visual Studio 2010 中,像这样设置我的 cmake 就足够了:

set_target_properties(${PROJECT_NAME} PROPERTIES VS_DOTNET_REFERENCES "${CMAKE_CURRENT_SOURCE_DIR}/../OrionMaster/3rdParty/GMap.NET.Core.dll;System;System.Core;System.Data;System.Drawing;System.Xml;WindowsBase")
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/clr /EHa")
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d")

if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
   string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()

if(CMAKE_CXX_FLAGS MATCHES "/EHsc")
   string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()

然后,当我在 Visual Studio 2010 下检查该项目时,我可以看到所有引用并且“公共(public)语言运行时支持”已打开。当我在 Visual Studio 2008 中尝试时,我没有看到任何引用,并且项目设置为“无公共(public)语言运行时支持”如果我再查看编译器选项,我可以看到/clr 正在传递给编译器.但是我仍然得到很多编译器错误,可能是因为它缺少引用。有谁知道正确设置它的方法?

最佳答案

对 VS_DOTNET_REFERENCES 属性的唯一“真实”源代码引用位于 CMake 源文件 Source/cmVisualStudio10TargetGenerator.cxx 中。

这在实践中意味着什么:VS_DOTNET_REFERENCES 仅针对 Visual Studio 2010 的 CMake 生成器和任何继承自它的生成器实现。 (现在存在于 VS 2012 和 2013 的最新 CMake 版本中......)

修改 CMake 源代码以支持 Visual Studio 早期版本的此属性可能是可能的,但目前尚未完成。

关于.net - C++/CLI 和 CMake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503229/

相关文章:

cmake - 什么是 CGAL::data_file_path()?

haskell - 是否可以将 cmake 用于 Haskell 项目?

c# - 使用内置 xml 序列化机制时对 xml 标签进行语言识别

.net - WPF 数据网格和动态列宽

c# - 如何在 .NET 中的大文件中间插入或删除字节

c++ - 围绕 avcodec_open/close 的线程锁定

c++ - 在Mac OS X Lion(10.8.2)上使用Xcode 4.6安装OpenCV。

c# - 如何在 .NET/C# 中切换异步和同步

dll - 如何使用命令行参数/ENTRY 在 C++/CLI DLL 中定义入口点

c++ - NO 带有字符串数组的存储类或类型说明符