Sto provando a impostare un progetto C++/CLI usando cmake. Ho avuto successo facendo questo con Visual Studio 2010, ma ora sto lavorando con una soluzione di eredità che richiede Visual Studio 2008. In Visual Studio 2010, è sufficiente impostare il mio cmake come questo:C++/CLI e 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()
Quando Esaminerò quindi il progetto sotto Visual Studio 2010, posso vedere tutti i riferimenti e "Common Language Runtime Support" è attivato. Quando lo provo in Visual Studio 2008, non vedo alcun riferimento, e il progetto è impostato su "No Common Language Runtime Support" Se poi guardo le opzioni del compilatore, posso vedere/clr è passato al compilatore . Tuttavia ho ancora un sacco di errori nel compilatore, probabilmente perché mancano dei riferimenti. Qualcuno sa come configurarlo correttamente?
Hai mai capito? Sto avendo lo stesso problema (non è possibile ottenere il flag CLR impostato in VS 2008). – Kohanz
Non ci siamo arresi, sembra che si sia rotto nel 2008, fammi sapere se capisci qualcosa anche se –
ho trovato che l'impostazione del flag/CLR funziona. Le pagine di proprietà VS2008 non rilevano questa opzione, ma la DLL è effettivamente compilata come/clr. – Kohanz