diff options
| -rw-r--r-- | CMakeLists.txt | 1 | ||||
| -rw-r--r-- | baz/Baz.cs | 5 | ||||
| -rw-r--r-- | chello/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | chello/hello.c | 5 |
4 files changed, 26 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index b3973f3..4a9563a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ set(RUNTIME_DIR ${DOTNET_ROOT}/shared/Microsoft.NETCore.App/10.0.9) include(cmake/dotnet.cmake) +add_subdirectory(chello) add_subdirectory(baz) add_subdirectory(foobar) add_subdirectory(hello) @@ -1,9 +1,14 @@ using System; +using System.Runtime.InteropServices; public class Baz { + [DllImport("hello_c")] + private static extern void hello_c(); + public static void Print() { Console.WriteLine("Baz"); + hello_c(); } } diff --git a/chello/CMakeLists.txt b/chello/CMakeLists.txt new file mode 100644 index 0000000..f7a276f --- /dev/null +++ b/chello/CMakeLists.txt @@ -0,0 +1,15 @@ +find_program(CMAKE_C_COMPILER NAMES gcc cc) +if(NOT CMAKE_C_COMPILER) + message(FATAL_ERROR "C compiler not found!") +endif() + +set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/libhello_c.so) + +add_custom_command( + OUTPUT ${OUTPUT_FILE} + COMMAND ${CMAKE_C_COMPILER} -shared -fPIC -o ${OUTPUT_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/hello.c + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/hello.c + COMMENT "Compiling hello_c shared library..." +) + +add_custom_target(hello_c ALL DEPENDS ${OUTPUT_FILE}) diff --git a/chello/hello.c b/chello/hello.c new file mode 100644 index 0000000..b99e83d --- /dev/null +++ b/chello/hello.c @@ -0,0 +1,5 @@ +#include <stdio.h> + +void hello_c(void) { + printf("hello from c\n"); +} |
