| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- enable_language(CXX CSharp)
- if(NOT DEFINED exportFileName OR
- NOT DEFINED exportNameSpace OR
- NOT DEFINED exportTargetName)
- message(FATAL_ERROR "export information missing")
- endif()
- # Include generated export file.
- if(NOT EXISTS "${exportFileName}")
- message(FATAL_ERROR "exportFileNameCSharp does not exist: ${exportFileName}")
- endif()
- include(${exportFileName})
- # Verify expected targets are imported
- set(linkNames linkNameCSharp linkNameNative linkNameMixed
- linkNamePure linkNameSafe)
- set(linkNameCSharp "${exportNameSpace}:${exportTargetName}CSharp")
- set(linkNameNative "${exportNameSpace}:${exportTargetName}Native")
- set(linkNameMixed "${exportNameSpace}:${exportTargetName}Mixed")
- set(linkNamePure "${exportNameSpace}:${exportTargetName}Pure")
- set(linkNameSafe "${exportNameSpace}:${exportTargetName}Safe")
- foreach(l ${linkNames})
- if(NOT TARGET ${${l}})
- message(FATAL_ERROR "imported target not found (${${l}})")
- endif()
- endforeach()
- # Test referencing managed assemblies from C# executable.
- add_executable(ReferenceImportCSharp ReferenceImport.cs)
- target_link_libraries(ReferenceImportCSharp
- ${linkNameCSharp}
- ${linkNameNative} # ignored
- ${linkNameMixed}
- ${linkNamePure}
- ${linkNameSafe}
- )
- # native C++ executable.
- add_executable(ReferenceImportNative ReferenceImportNative.cxx)
- target_link_libraries(ReferenceImportNative
- ${linkNameCSharp} # ignored
- ${linkNameNative}
- ${linkNameMixed}
- ${linkNamePure} # ignored
- ${linkNameSafe} # ignored
- )
- add_custom_command(TARGET ReferenceImportNative POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
- "$<TARGET_FILE:${linkNameNative}>"
- "${CMAKE_BINARY_DIR}/$<CONFIG>"
- )
- # mixed C++ executable.
- add_executable(ReferenceImportMixed ReferenceImportMixed.cxx)
- target_link_libraries(ReferenceImportMixed
- ${linkNameCSharp}
- ${linkNameNative}
- ${linkNameMixed}
- ${linkNamePure}
- ${linkNameSafe}
- )
- set_target_properties(ReferenceImportMixed PROPERTIES
- COMMON_LANGUAGE_RUNTIME "")
- # pure C++ executable.
- add_executable(ReferenceImportPure ReferenceImportPure.cxx)
- target_link_libraries(ReferenceImportPure
- ${linkNameCSharp}
- ${linkNameNative} # ignored
- ${linkNameMixed}
- ${linkNamePure}
- ${linkNameSafe}
- )
- set_target_properties(ReferenceImportPure PROPERTIES
- COMMON_LANGUAGE_RUNTIME "pure")
- # native C++ executable.
- add_executable(ReferenceImportSafe ReferenceImportSafe.cxx)
- target_link_libraries(ReferenceImportSafe
- ${linkNameCSharp}
- ${linkNameNative} # ignored
- ${linkNameMixed}
- ${linkNamePure}
- ${linkNameSafe}
- )
- set_target_properties(ReferenceImportSafe PROPERTIES
- COMMON_LANGUAGE_RUNTIME "safe")
|