UseSWIG: Add new behavior for better support files management

fixes: #17840
This commit is contained in:
Marc Chevrier
2018-03-27 16:49:58 +02:00
parent 438429d6fe
commit 8ab4e38373
6 changed files with 245 additions and 43 deletions

View File

@@ -7,8 +7,9 @@ include(CTest)
find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})
find_package(Python REQUIRED COMPONENTS Development)
find_package(Python REQUIRED COMPONENTS Interpreter Development)
find_package(Perl REQUIRED)
find_package(PerlLibs REQUIRED)
unset(CMAKE_SWIG_FLAGS)
@@ -23,6 +24,11 @@ swig_add_library(example1
LANGUAGE python
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Python"
SOURCES ../example.i ../example.cxx)
set_target_properties (example1 PROPERTIES
OUTPUT_NAME example
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Python"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Python"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Python")
target_link_libraries(example1 PRIVATE Python::Python)
# re-use sample interface file for another plugin
@@ -35,4 +41,29 @@ swig_add_library(example2
LANGUAGE perl
OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/Perl"
SOURCES ../example.i ../example.cxx)
set_target_properties (example2 PROPERTIES
OUTPUT_NAME example
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Perl"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Perl"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Perl")
target_link_libraries(example2 PRIVATE ${PERL_LIBRARY})
add_test (NAME MultipleModules.Python
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:example1>"
"${Python_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/../runme.py")
if (WIN32)
file (TO_CMAKE_PATH "$ENV{PATH}" perl_path)
string (REPLACE ";" "$<SEMICOLON>" perl_path "${perl_path}")
set (perl_env "PATH=$<TARGET_FILE_DIR:example2>$<SEMICOLON>${perl_path}")
else()
set (perl_env "LD_LIBRARY_PATH=$<TARGET_FILE_DIR:example2>")
endif()
add_test (NAME MultipleModules.Perl
COMMAND "${CMAKE_COMMAND}" -E env "${perl_env}"
"${PERL_EXECUTABLE}" "-I$<TARGET_FILE_DIR:example2>"
"${CMAKE_CURRENT_SOURCE_DIR}/../runme.pl")