[CMake] Visual Studio /AI and /clr compiler option
Pierluigi Taddei
pierluigi.taddei at jrc.ec.europa.eu
Tue Mar 1 10:26:38 EST 2011
I have a project that makes use of managed code and is compiled using
the /clr option.
1 ) In order to set up cmake correctly I had to issue the following command:
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/clr")
#mark as managed code
This was not sufficient because cmake added other options by default
(/EHsc and /RTC1) which are not compatible with /clr.
I had to disable them by manually replacing the cmake flags strings:
if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG}")
message(STATUS ${PROJECT_NAME} " CMAKE_CXX_FLAGS_DEBUG removing /RTC1")
endif()
if(CMAKE_CXX_FLAGS MATCHES "/EHsc")
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
message(STATUS ${PROJECT_NAME} " CMAKE_CXX_FLAGS removing /EHsc")
endif()
Is this the only way to perform that or there is a more elegant way?
2) In the same managed project I am importing 3rd party dlls which are
referenced in the code as
#using [3dpparty.dll]
In order to set up the folder containing the dlls I use the visual
studio compiler option /AI (which corresponds to the "Resolve #using
Reference" field in the project properties).
Since I did not find a way to fix it explicitly using a cmake command I
modified the cmake compiler flags as follows:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /AI\"${3DPARTY_FOLDER}\" ")
Again, is this the only way to perform that or there is a more elegant way?
Thanks,
Pierluigi
More information about the CMake
mailing list