mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
6
Help/release/dev/UseSWIG-POSTFIX.rst
Normal file
6
Help/release/dev/UseSWIG-POSTFIX.rst
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
UseSWIG-POSTFIX
|
||||||
|
---------------
|
||||||
|
|
||||||
|
* The ``swig_add_library()`` command, from the :module:`UseSWIG` module, gained
|
||||||
|
the option ``DEBUG_POSTFIX`` for the management of the
|
||||||
|
:prop_tgt:`DEBUG_POSTFIX` target property.
|
@@ -35,6 +35,7 @@ The following command is defined for use with ``SWIG``:
|
|||||||
[TYPE <SHARED|MODULE|STATIC|USE_BUILD_SHARED_LIBS>]
|
[TYPE <SHARED|MODULE|STATIC|USE_BUILD_SHARED_LIBS>]
|
||||||
LANGUAGE <language>
|
LANGUAGE <language>
|
||||||
[NO_PROXY]
|
[NO_PROXY]
|
||||||
|
[DEBUG_POSTFIX <postfix>]
|
||||||
[OUTPUT_DIR <directory>]
|
[OUTPUT_DIR <directory>]
|
||||||
[OUTFILE_DIR <directory>]
|
[OUTFILE_DIR <directory>]
|
||||||
SOURCES <file>...
|
SOURCES <file>...
|
||||||
@@ -100,6 +101,16 @@ The following command is defined for use with ``SWIG``:
|
|||||||
|
|
||||||
Prevent the generation of the wrapper layer (swig ``-noproxy`` option).
|
Prevent the generation of the wrapper layer (swig ``-noproxy`` option).
|
||||||
|
|
||||||
|
``DEBUG_POSTFIX``
|
||||||
|
.. versionadded:: 4.2
|
||||||
|
|
||||||
|
Manage the :prop_tgt:`DEBUG_POSTFIX` target property. Currently, only
|
||||||
|
meaningful for the ``python`` language.
|
||||||
|
|
||||||
|
If the :prop_gbl:`DEBUG_CONFIGURATIONS` global property is defined, define
|
||||||
|
the :prop_tgt:`<CONFIG>_POSTFIX` target property for each debug
|
||||||
|
configuration.
|
||||||
|
|
||||||
``OUTPUT_DIR``
|
``OUTPUT_DIR``
|
||||||
.. versionadded:: 3.12
|
.. versionadded:: 3.12
|
||||||
|
|
||||||
@@ -675,7 +686,7 @@ function(SWIG_ADD_SOURCE_TO_MODULE name outfiles infile)
|
|||||||
NOT ("-interface" IN_LIST swig_source_file_flags OR "-interface" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
|
NOT ("-interface" IN_LIST swig_source_file_flags OR "-interface" IN_LIST SWIG_MODULE_${name}_EXTRA_FLAGS))
|
||||||
# This makes sure that the name used in the proxy code
|
# This makes sure that the name used in the proxy code
|
||||||
# matches the library name created by CMake
|
# matches the library name created by CMake
|
||||||
list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-interface" "$<TARGET_FILE_PREFIX:${target_name}>$<TARGET_FILE_BASE_NAME:${target_name}>")
|
list (APPEND SWIG_MODULE_${name}_EXTRA_FLAGS "-interface" "$<TARGET_FILE_PREFIX:${target_name}>$<TARGET_FILE_BASE_NAME:${target_name},POSTFIX:$<IF:$<AND:$<BOOL:${SWIG_DEBUG_POSTFIX}>,$<CONFIG:${SWIG_DEBUG_CONFIGS}>>,EXCLUDE,INCLUDE>>")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
list (APPEND swig_extra_flags ${SWIG_MODULE_${name}_EXTRA_FLAGS})
|
list (APPEND swig_extra_flags ${SWIG_MODULE_${name}_EXTRA_FLAGS})
|
||||||
@@ -787,6 +798,7 @@ function(SWIG_ADD_LIBRARY name)
|
|||||||
set(options NO_PROXY)
|
set(options NO_PROXY)
|
||||||
set(oneValueArgs LANGUAGE
|
set(oneValueArgs LANGUAGE
|
||||||
TYPE
|
TYPE
|
||||||
|
DEBUG_POSTFIX
|
||||||
OUTPUT_DIR
|
OUTPUT_DIR
|
||||||
OUTFILE_DIR)
|
OUTFILE_DIR)
|
||||||
set(multiValueArgs SOURCES)
|
set(multiValueArgs SOURCES)
|
||||||
@@ -810,6 +822,18 @@ function(SWIG_ADD_LIBRARY name)
|
|||||||
unset(_SAM_TYPE)
|
unset(_SAM_TYPE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(_SAM_DEBUG_POSTFIX)
|
||||||
|
get_property(SWIG_DEBUG_CONFIGS GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
|
||||||
|
if(NOT SWIG_DEBUG_CONFIGS)
|
||||||
|
set(SWIG_DEBUG_CONFIGS DEBUG)
|
||||||
|
endif()
|
||||||
|
string(TOUPPER "${SWIG_DEBUG_CONFIGS}" SWIG_DEBUG_CONFIGS)
|
||||||
|
set(SWIG_DEBUG_POSTFIX "${_SAM_DEBUG_POSTFIX}")
|
||||||
|
else()
|
||||||
|
unset(SWIG_DEBUG_CONFIGS)
|
||||||
|
unset(SWIG_DEBUG_POSTFIX)
|
||||||
|
endif()
|
||||||
|
|
||||||
cmake_policy(GET CMP0078 target_name_policy)
|
cmake_policy(GET CMP0078 target_name_policy)
|
||||||
if (target_name_policy STREQUAL "NEW")
|
if (target_name_policy STREQUAL "NEW")
|
||||||
set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
|
set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
|
||||||
@@ -1001,6 +1025,11 @@ function(SWIG_ADD_LIBRARY name)
|
|||||||
if(WIN32 AND NOT CYGWIN)
|
if(WIN32 AND NOT CYGWIN)
|
||||||
set_target_properties(${target_name} PROPERTIES SUFFIX ".pyd")
|
set_target_properties(${target_name} PROPERTIES SUFFIX ".pyd")
|
||||||
endif()
|
endif()
|
||||||
|
if(SWIG_DEBUG_POSTFIX)
|
||||||
|
foreach(config IN LISTS SWIG_DEBUG_CONFIGS)
|
||||||
|
set_target_properties(${target_name} PROPERTIES ${config}_POSTFIX "${SWIG_DEBUG_POSTFIX}")
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
elseif (swig_lowercase_language STREQUAL "r")
|
elseif (swig_lowercase_language STREQUAL "r")
|
||||||
set_target_properties(${target_name} PROPERTIES PREFIX "")
|
set_target_properties(${target_name} PROPERTIES PREFIX "")
|
||||||
elseif (swig_lowercase_language STREQUAL "ruby")
|
elseif (swig_lowercase_language STREQUAL "ruby")
|
||||||
|
@@ -22,6 +22,13 @@ if (CMake_TEST_FindPython2 OR CMake_TEST_FindPython3)
|
|||||||
run_cmake(CMP0086-NEW)
|
run_cmake(CMP0086-NEW)
|
||||||
run_cmake_target(CMP0086-NEW build example)
|
run_cmake_target(CMP0086-NEW build example)
|
||||||
|
|
||||||
|
block()
|
||||||
|
run_cmake(SetPOSTFIX)
|
||||||
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/SetPOSTFIX-build)
|
||||||
|
set(RunCMake_TEST_NO_CLEAN 1)
|
||||||
|
run_cmake_command(SetPOSTFIX-build ${CMAKE_COMMAND} --build . --config $<CONFIG>)
|
||||||
|
run_cmake_command(SetPOSTFIX-run ${CMAKE_CTEST_COMMAND} -C $<CONFIG> -V)
|
||||||
|
endblock()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
run_cmake(CMP0122-WARN)
|
run_cmake(CMP0122-WARN)
|
||||||
|
28
Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake
Normal file
28
Tests/RunCMake/UseSWIG/SetPOSTFIX.cmake
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
enable_language(C)
|
||||||
|
|
||||||
|
include(CTest)
|
||||||
|
|
||||||
|
cmake_policy(SET CMP0078 NEW)
|
||||||
|
cmake_policy(SET CMP0086 NEW)
|
||||||
|
|
||||||
|
find_package(Python REQUIRED COMPONENTS Interpreter Development)
|
||||||
|
|
||||||
|
find_package(SWIG)
|
||||||
|
include(UseSWIG)
|
||||||
|
|
||||||
|
swig_add_library(example LANGUAGE python TYPE MODULE DEBUG_POSTFIX "${Python_DEBUG_POSTFIX}"
|
||||||
|
SOURCES example.i)
|
||||||
|
target_link_libraries(example PRIVATE Python::Module)
|
||||||
|
|
||||||
|
|
||||||
|
# Path separator
|
||||||
|
if (WIN32)
|
||||||
|
set (PS "$<SEMICOLON>")
|
||||||
|
else()
|
||||||
|
set (PS ":")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_test (NAME SetPOSTFIX
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}${PS}$<TARGET_FILE_DIR:example>"
|
||||||
|
"${Python_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/runme.py")
|
7
Tests/RunCMake/UseSWIG/runme.py
Normal file
7
Tests/RunCMake/UseSWIG/runme.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# file: runme.py
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import example
|
||||||
|
|
||||||
|
print ("Goodbye")
|
Reference in New Issue
Block a user