diff options
author | Rishi Theivendran <rishi.theivendran@rohde-schwarz.com> | 2018-06-08 20:15:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-06-12 15:34:58 (GMT) |
commit | 0c2fb4c8964b6164c44e8641c8c9225369c0228b (patch) | |
tree | 732c27065bfe1e317da5dd95d12e6d85bd16f215 /Tests/UseSWIG | |
parent | 90ebc32d9e7400a590973b30c99f2986bcb2b755 (diff) | |
download | CMake-0c2fb4c8964b6164c44e8641c8c9225369c0228b.zip CMake-0c2fb4c8964b6164c44e8641c8c9225369c0228b.tar.gz CMake-0c2fb4c8964b6164c44e8641c8c9225369c0228b.tar.bz2 |
UseSWIG: Add CSHARP variant for wrapper files
Issue: #18065
Fixes: #18066
Diffstat (limited to 'Tests/UseSWIG')
-rw-r--r-- | Tests/UseSWIG/BasicConfiguration.cmake | 4 | ||||
-rw-r--r-- | Tests/UseSWIG/BasicCsharp/CMakeLists.txt | 21 | ||||
-rw-r--r-- | Tests/UseSWIG/CMakeLists.txt | 14 | ||||
-rw-r--r-- | Tests/UseSWIG/runme.cs | 54 |
4 files changed, 93 insertions, 0 deletions
diff --git a/Tests/UseSWIG/BasicConfiguration.cmake b/Tests/UseSWIG/BasicConfiguration.cmake index d025d2a..fd3ac40 100644 --- a/Tests/UseSWIG/BasicConfiguration.cmake +++ b/Tests/UseSWIG/BasicConfiguration.cmake @@ -15,6 +15,9 @@ unset(SWIG_LANG_DEFINITIONS) unset(SWIG_LANG_OPTIONS) unset(SWIG_LANG_LIBRARIES) +if(${language} MATCHES csharp) + set(SWIG_LANG_TYPE TYPE SHARED) +endif() if(${language} MATCHES python) find_package(Python REQUIRED COMPONENTS Interpreter Development) set(SWIG_LANG_INCLUDE_DIRECTORIES ${Python_INCLUDE_DIRS}) @@ -76,4 +79,5 @@ SWIG_ADD_LIBRARY(example ${SWIG_LANG_TYPE} SOURCES "${CMAKE_CURRENT_LIST_DIR}/example.i" "${CMAKE_CURRENT_LIST_DIR}/example.cxx") +TARGET_INCLUDE_DIRECTORIES(example PUBLIC ${CMAKE_CURRENT_LIST_DIR}) TARGET_LINK_LIBRARIES(example PRIVATE ${SWIG_LANG_LIBRARIES}) diff --git a/Tests/UseSWIG/BasicCsharp/CMakeLists.txt b/Tests/UseSWIG/BasicCsharp/CMakeLists.txt new file mode 100644 index 0000000..84743ef --- /dev/null +++ b/Tests/UseSWIG/BasicCsharp/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.12) + +project(TestBasicCsharp CXX CSharp) + +include(CTest) + +set(language "csharp") + +include (../BasicConfiguration.cmake) + +set_source_files_properties(Square.cs Circle.cs Shape.cs PROPERTIES GENERATED 1) +add_library(example_cs SHARED $<TARGET_PROPERTY:example,SWIG_SUPPORT_FILES> Square.cs Circle.cs Shape.cs) +set_target_properties(example_cs PROPERTIES LINKER_LANGUAGE CSharp) +target_link_libraries(example_cs example) + +add_executable(runme ${CMAKE_CURRENT_SOURCE_DIR}/../runme.cs) +target_link_libraries(runme example_cs) +set_target_properties(runme PROPERTIES LINKER_LANGUAGE CSharp) + +add_test (NAME BasicCsharp + COMMAND $<TARGET_FILE:runme>) diff --git a/Tests/UseSWIG/CMakeLists.txt b/Tests/UseSWIG/CMakeLists.txt index 0c4ec8a..cc29b77 100644 --- a/Tests/UseSWIG/CMakeLists.txt +++ b/Tests/UseSWIG/CMakeLists.txt @@ -19,6 +19,20 @@ add_test(NAME UseSWIG.LegacyPerl COMMAND --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> ) +include(CheckLanguage) +check_language(CSharp) +if (CMAKE_CSharp_COMPILER) + add_test(NAME UseSWIG.BasicCsharp COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/UseSWIG/BasicCsharp" + "${CMake_BINARY_DIR}/Tests/UseSWIG/BasicCsharp" + ${build_generator_args} + --build-project TestBasicCsharp + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) +endif() add_test(NAME UseSWIG.BasicPython COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> diff --git a/Tests/UseSWIG/runme.cs b/Tests/UseSWIG/runme.cs new file mode 100644 index 0000000..f0c1bd2 --- /dev/null +++ b/Tests/UseSWIG/runme.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; + +public class runme +{ + static void Main() + { + // ----- Object creation ----- + + Console.WriteLine("Creating some objects:"); + Circle c = new Circle(10); + Console.WriteLine(" Created " + c); + Square s = new Square(10); + Console.WriteLine(" Created " + s); + + // ----- Access a static member ----- + + Console.WriteLine("\nA total of " + Shape.nshapes + " shapes were created"); + + // ----- Member data access ----- + + // Set the location of the object + + c.x = 20; + c.y = 30; + + s.x = -10; + s.y = 5; + + Console.WriteLine("\nHere is their current position:"); + Console.WriteLine(" Circle = ({0}, {1})", c.x,c.y); + Console.WriteLine(" Square = ({0}, {1})", s.x,s.y); + + // ----- Call some methods ----- + + Console.WriteLine("\nHere are some properties of the shapes:"); + List <Shape> shapeList = new List <Shape> { c,s }; + foreach(var o in shapeList){ + Console.WriteLine(" " + o); + Console.WriteLine(" area = " + o.area()); + Console.WriteLine(" perimeter = " + o.perimeter()); + } + + Console.WriteLine("\nGuess I'll clean up now"); + + // Note: this invokes the virtual destructor + c.Dispose(); + s.Dispose(); + + s = new Square(10);; + Console.WriteLine(Shape.nshapes + " shapes remain"); + Console.WriteLine("Goodbye"); + } +} |