1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

Merge topic 'UseSWIG-support-files-in-subdirectories'

50e53eaed9 UseSWIG: Take care of support files in sub-directories

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5097
This commit is contained in:
Brad King
2020-08-06 14:53:28 +00:00
committed by Kitware Robot
7 changed files with 86 additions and 2 deletions

View File

@@ -4,7 +4,7 @@
if (ACTION STREQUAL "CLEAN")
# Collect current list of generated files
file (GLOB files LIST_DIRECTORIES FALSE RELATIVE "${SUPPORT_FILES_WORKING_DIRECTORY}" "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
file (GLOB_RECURSE files LIST_DIRECTORIES TRUE RELATIVE "${SUPPORT_FILES_WORKING_DIRECTORY}" "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
if (files)
# clean-up the output directory
@@ -22,7 +22,7 @@ endif()
if (ACTION STREQUAL "COPY")
# Collect current list of generated files
file (GLOB files LIST_DIRECTORIES FALSE "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
file (GLOB files LIST_DIRECTORIES TRUE "${SUPPORT_FILES_WORKING_DIRECTORY}/*")
if (files)
# copy files to the output directory

View File

@@ -33,6 +33,16 @@ if (CMAKE_CSharp_COMPILER)
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
endif()
add_test(NAME UseSWIG.NamespaceCsharp COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/UseSWIG/NamespaceCsharp"
"${CMake_BINARY_DIR}/Tests/UseSWIG/NamespaceCsharp"
${build_generator_args}
--build-project TestNamespaceCsharp
--build-options ${build_options}
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)
add_test(NAME UseSWIG.BasicPython COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>

View File

@@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 3.12...3.13)
project(TestNamsespaceCsharp CXX)
include(CTest)
find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})
set(UseSWIG_MODULE_VERSION 2)
add_library(ns_example STATIC ns_example.cpp)
target_include_directories(ns_example PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
set_property(SOURCE ns_example.i PROPERTY CPLUSPLUS ON)
swig_add_library(ns_csharp TYPE SHARED LANGUAGE csharp SOURCES ns_example.i)
set_target_properties(ns_csharp PROPERTIES SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE)
target_link_libraries(ns_csharp PRIVATE ns_example)
get_target_property(NS_CSHARP_SUPPORT_FILES_DIR ns_csharp SWIG_SUPPORT_FILES_DIRECTORY)
add_test(NAME NamespaceCsharp COMMAND "${CMAKE_COMMAND}" "-DSUPPORT_FILES_DIRECTORY=${NS_CSHARP_SUPPORT_FILES_DIR}" -P "${CMAKE_CURRENT_SOURCE_DIR}/ValidateSupportFiles.cmake")

View File

@@ -0,0 +1,8 @@
file (GLOB_RECURSE files LIST_DIRECTORIES TRUE RELATIVE "${SUPPORT_FILES_DIRECTORY}" "${SUPPORT_FILES_DIRECTORY}/*")
list(SORT files)
if (NOT files STREQUAL "NSExample.cs;NSExamplePINVOKE.cs;ns;ns/my_class_in_namespace.cs")
message (FATAL_ERROR "Support files not correctly collected.")
endif()

View File

@@ -0,0 +1,14 @@
#include "ns_example.hpp"
namespace ns {
void my_class_in_namespace::add(int value)
{
Sum += value;
}
int my_class_in_namespace::get_sum() const
{
return Sum;
}
}

View File

@@ -0,0 +1,19 @@
#pragma once
namespace ns {
class my_class_in_namespace
{
public:
my_class_in_namespace()
: Sum(0)
{
}
void add(int value);
int get_sum() const;
private:
int Sum;
};
}

View File

@@ -0,0 +1,8 @@
%module NSExample
%{
#include "ns_example.hpp"
%}
%nspace ns::my_class_in_namespace;
%include "ns_example.hpp"