2016-10-19 22 views
0

cmakeで管理対象のC++コードを生成しようとしています。以下は、私はそれは我々がそれを行うのですcmakeのtrue.Howにclrsupportを設定していないcmakeでclrサポートをtrueに設定しました

SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/clr") 
STRING(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) 
STRING(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) 
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /clr") 

のために追加したスクリプトです。

-swetha

+0

を働いていますか?あなたのフラグの前に '/'を追加する必要はありません。 – usr1234567

+0

この時点では役立つかどうかは分かりませんが、VSマネージドコードプロジェクトのサポートは現在CMakeに追加され、次のリビジョン(CMake> 3.7.0、https:// cmake .org/gitweb?p = cmake.git; a = commitdiff; h = 2e2ba95c)) – Florian

答えて

0

私は私のcmakelistで次のプロパティを設定し、今、コンパイラの呼び出しに追加されますどのような

target_compile_options(${project_name} PRIVATE /clr) 
target_compile_options(${project_name} PRIVATE /fp:precise) # /fp:strict is   
incompatible with /clr 

set_property(TARGET ${project_name} PROPERTY VS_GLOBAL_ROOTNAMESPACE ${project_name}) 

set_property(TARGET ${project_name} PROPERTY VS_GLOBAL_KEYWORD "ManagedCProj") 

set_property(TARGET ${project_name} PROPERTY VS_GLOBAL_CLRSupport "true") 

set_property(TARGET ${project_name} PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.0") 

set_property(TARGET ${project_name} PROPERTY VS_DOTNET_REFERENCES "System" "System.Data" "System.Drawing" "System.Windows.Forms" "System.Xml") 

# Note: Modification of compiler flags is required for CLR compatibility now that we are using .resx files. 
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") 
+1

あなたの名前は/あなたの答えのソースをリンクする必要があります。私がそれを正しく理解していれば、あなたが投稿したものはBenjaamin BalletによってCMakeのメーリングリストで[あなたの質問に対する答え](http://www.mail-archive.com/[email protected]/msg55716.html)として提案されました)。 – Florian

関連する問題