【发布时间】:2012-09-19 21:33:48
【问题描述】:
我正在尝试使用 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 下检查项目时,我可以看到所有引用并且“公共语言运行时支持”已打开。当我在 Visual Studio 2008 中尝试时,我没有看到任何引用,并且项目设置为“无公共语言运行时支持”如果我再查看编译器选项,我可以看到 /clr 正在传递给编译器.但是我仍然得到很多编译器错误,可能是因为它缺少引用。有谁知道正确设置的方法吗?
【问题讨论】:
-
你有想过这个吗?我遇到了同样的问题(无法在 VS 2008 中设置 CLR 标志)。
-
不,我们放弃了,它似乎与 2008 相比已被打破,但如果你发现了什么,请告诉我
-
我发现设置 /CLR 标志确实有效。 VS2008的属性页没有选择这个选项,但是DLL确实编译为/clr。
-
@Kohanz 是的 /clr 被传递给编译器,我们遇到的问题是引用没有被正确处理(或者我们设置错误)并且我们得到了大量的编译错误。
-
对于它的价值,我遇到了你描述的同样的问题,但没有找到解决方法。早在三月份我就不清楚你所说的引用没有被正确处理是什么意思,但我现在明白了。那时,我的 C++/CLI 项目只依赖于基本的 System 命名空间,不需要显式包含,但现在我需要使用 System.Drawing 并意识到我的构建现在只能在 VS2010 中工作,而不是 VS2008。