Set up CMake rules to generate C# bindings
This commit is contained in:
@@ -5,6 +5,7 @@ cmake_minimum_required (VERSION 2.6)
|
|||||||
set(BUILD_BINDINGS_PERL OFF CACHE BOOL "Build the SourcetrailDB Perl bindings.")
|
set(BUILD_BINDINGS_PERL OFF CACHE BOOL "Build the SourcetrailDB Perl bindings.")
|
||||||
set(BUILD_BINDINGS_PYTHON OFF CACHE BOOL "Build the SourcetrailDB Python bindings.")
|
set(BUILD_BINDINGS_PYTHON OFF CACHE BOOL "Build the SourcetrailDB Python bindings.")
|
||||||
set(BUILD_BINDINGS_JAVA OFF CACHE BOOL "Build the SourcetrailDB Java bindings.")
|
set(BUILD_BINDINGS_JAVA OFF CACHE BOOL "Build the SourcetrailDB Java bindings.")
|
||||||
|
set(BUILD_BINDINGS_CSHARP OFF CACHE BOOL "Build the SourcetrailDB C# bindings.")
|
||||||
set(BUILD_EXAMPLES ON CACHE BOOL "Build the examples.")
|
set(BUILD_EXAMPLES ON CACHE BOOL "Build the examples.")
|
||||||
|
|
||||||
set(PROJECT_NAME "SourcetrailDB")
|
set(PROJECT_NAME "SourcetrailDB")
|
||||||
@@ -83,6 +84,16 @@ else()
|
|||||||
message(STATUS "Building the SourcetrailDB Java bindings will be skipped. You can enable building this target by setting 'BUILD_BINDINGS_JAVA' to 'ON'.")
|
message(STATUS "Building the SourcetrailDB Java bindings will be skipped. You can enable building this target by setting 'BUILD_BINDINGS_JAVA' to 'ON'.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# --- C# Binding ---
|
||||||
|
if (BUILD_BINDINGS_CSHARP)
|
||||||
|
message(STATUS "The SourcetrailDB C# bindings will be built.")
|
||||||
|
|
||||||
|
set(CSHARP_BINDING_TARGET_NAME "bindings_csharp")
|
||||||
|
set(CSHARP_BINDING_OUTPUT_DIR "")
|
||||||
|
add_subdirectory("${CMAKE_SOURCE_DIR}/bindings_csharp" "${CMAKE_BINARY_DIR}/bindings_csharp")
|
||||||
|
else()
|
||||||
|
message(STATUS "Building the SourcetrailDB C# bindings will be skipped. You can enable building this target by setting 'BUILD_BINDINGS_CSHARP' to 'ON'.")
|
||||||
|
endif()
|
||||||
|
|
||||||
# --- Examples ---
|
# --- Examples ---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
cmake_minimum_required (VERSION 2.6)
|
||||||
|
|
||||||
|
# --- Setup Paths ---
|
||||||
|
|
||||||
|
set(RESOURCES_SWIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../resources_swig")
|
||||||
|
set(GENERATED_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/src")
|
||||||
|
set(CSHARP_BINDING_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
|
||||||
|
|
||||||
|
set(SWIG_INTERFACE_FILE "${RESOURCES_SWIG_DIR}/interface/sourcetraildb.i")
|
||||||
|
set(CSHARP_BINDINGS_NAMESPACE "CoatiSoftware.SourcetrailDB")
|
||||||
|
|
||||||
|
# --- Find Swig ---
|
||||||
|
|
||||||
|
find_package(SWIG REQUIRED)
|
||||||
|
include(${SWIG_USE_FILE})
|
||||||
|
|
||||||
|
# --- Configure Target ---
|
||||||
|
|
||||||
|
set_source_files_properties(${SWIG_INTERFACE_FILE} PROPERTIES CPLUSPLUS ON)
|
||||||
|
set_property(SOURCE ${SWIG_INTERFACE_FILE} PROPERTY COMPILE_OPTIONS -namespace ${CSHARP_BINDINGS_NAMESPACE})
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
"${RESOURCES_SWIG_DIR}/include"
|
||||||
|
"${CORE_SOURCE_DIR}/include"
|
||||||
|
)
|
||||||
|
|
||||||
|
swig_add_library(
|
||||||
|
${CSHARP_BINDING_TARGET_NAME}
|
||||||
|
TYPE SHARED
|
||||||
|
LANGUAGE csharp
|
||||||
|
OUTPUT_DIR ${CSHARP_BINDING_OUTPUT_DIR}
|
||||||
|
OUTFILE_DIR ${GENERATED_SRC_DIR}
|
||||||
|
SOURCES ${SWIG_INTERFACE_FILE} ${RESOURCES_SWIG_DIR}/src/sourcetraildb.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(${CSHARP_BINDING_TARGET_NAME}
|
||||||
|
PROPERTIES OUTPUT_NAME SourcetrailDB
|
||||||
|
SWIG_FLAGS ${CSHARP_BINDINGS_NAMESPACE})
|
||||||
|
|
||||||
|
swig_link_libraries(${CSHARP_BINDING_TARGET_NAME} ${CSHARP_LIBRARIES} ${LIB_CORE_TARGET_NAME})
|
||||||
Reference in New Issue
Block a user