Max*_*ich 10 .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()
Run Code Online (Sandbox Code Playgroud)
当我在visual studio 2010下检查项目时,我可以看到所有引用和"公共语言运行时支持"已打开.当我在visual studio 2008中尝试它时,我没有看到任何引用,并且项目设置为"No Common Language Runtime Support"如果我再查看编译器选项,我可以看到/ clr正在传递给编译器.但是我仍然会遇到很多编译器错误,可能是因为它缺少引用.有没有人知道如何正确设置它?
VS_DOTNET_REFERENCES属性的唯一"实际"源代码引用位于CMake源文件Source/cmVisualStudio10TargetGenerator.cxx中.
这在实践中意味着什么:VS_DOTNET_REFERENCES仅针对Visual Studio 2010的CMake生成器以及从中继承的任何生成器实现.(现在存在于VS 2012和2013的最新CMake版本中......)
修改CMake源代码以支持早期版本的Visual Studio的此属性可能是可能的,但此时尚未完成.