diff options
author | Matthew Woehlke <matthew.woehlke@kitware.com> | 2017-04-20 18:44:25 (GMT) |
---|---|---|
committer | Matthew Woehlke <matthew.woehlke@kitware.com> | 2017-04-21 14:51:09 (GMT) |
commit | 789c8de3df0c18fe8b0912286e4c1810542a79e9 (patch) | |
tree | 5147d2257f4ab01ae7eb7c84d040ce6138553d49 /Modules/UseJava.cmake | |
parent | b4d3cdc8c504ddc5d2618203a831c950f8d0102a (diff) | |
download | CMake-789c8de3df0c18fe8b0912286e4c1810542a79e9.zip CMake-789c8de3df0c18fe8b0912286e4c1810542a79e9.tar.gz CMake-789c8de3df0c18fe8b0912286e4c1810542a79e9.tar.bz2 |
UseJava: Support namespaced exports
Add NAMESPACE option to export_jars and install_jar_exports. Import
JAR's as imported static libraries rather than custom targets, as this
is necessary to allow the imported targets to contain ':' in their
names. (This also means they won't show up in VS projects, which is more
consistent with other imported targets.) Also, improve the documentation
to be more stylistically consistent with documentation elsewhere.
Diffstat (limited to 'Modules/UseJava.cmake')
-rw-r--r-- | Modules/UseJava.cmake | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake index 93255ae..8ae3720 100644 --- a/Modules/UseJava.cmake +++ b/Modules/UseJava.cmake @@ -244,21 +244,23 @@ # # :: # -# install_jar_exports(TARGETS jar1 [jar2 ...] -# FILE export_filename -# DESTINATION destination [COMPONENT component]) +# install_jar_exports(TARGETS jars... +# [NAMESPACE <namespace>] +# FILE <filename> +# DESTINATION <dir> [COMPONENT <component>]) # -# This command installs a target export file export_filename for the named jar -# targets to the given DESTINATION. Its function is similar to that of -# install(EXPORTS). +# This command installs a target export file ``<filename>`` for the named jar +# targets to the given ``DESTINATION``. Its function is similar to that of +# :command:`install(EXPORTS ...)`. # # :: # -# export_jars(TARGETS jar1 [jar2 ...] -# FILE export_filename) +# export_jars(TARGETS jars... +# [NAMESPACE <namespace>] +# FILE <filename>) # -# This command writes a target export file export_filename for the named jar -# targets. Its function is similar to that of export(). +# This command writes a target export file ``<filename>`` for the named jar +# targets. Its function is similar to that of :command:`export(...)`. # # :: # @@ -424,10 +426,12 @@ endfunction() function(__java_export_jar VAR TARGET PATH) get_target_property(_jarpath ${TARGET} JAR_FILE) get_filename_component(_jarname ${_jarpath} NAME) + set(_target "${_jar_NAMESPACE}${TARGET}") __java_lcat(${VAR} - "# Create imported target ${TARGET}" - "add_custom_target(${TARGET})" - "set_target_properties(${TARGET} PROPERTIES" + "# Create imported target ${_target}" + "add_library(${_target} IMPORTED STATIC)" + "set_target_properties(${_target} PROPERTIES" + " IMPORTED_LOCATION \"${PATH}/${_jarname}\"" " JAR_FILE \"${PATH}/${_jarname}\")" "" ) @@ -1341,7 +1345,7 @@ function(export_jars) # Parse and validate arguments cmake_parse_arguments(_export_jars "" - "FILE" + "FILE;NAMESPACE" "TARGETS" ${ARGN} ) @@ -1351,6 +1355,7 @@ function(export_jars) if (NOT _export_jars_TARGETS) message(SEND_ERROR "export_jars: TARGETS must be specified.") endif() + set(_jar_NAMESPACE "${_export_jars_NAMESPACE}") # Set content of generated exports file string(REPLACE ";" " " __targets__ "${_export_jars_TARGETS}") @@ -1373,7 +1378,7 @@ function(install_jar_exports) # Parse and validate arguments cmake_parse_arguments(_install_jar_exports "" - "FILE;DESTINATION;COMPONENT" + "FILE;DESTINATION;COMPONENT;NAMESPACE" "TARGETS" ${ARGN} ) @@ -1386,6 +1391,7 @@ function(install_jar_exports) if (NOT _install_jar_exports_TARGETS) message(SEND_ERROR "install_jar_exports: TARGETS must be specified.") endif() + set(_jar_NAMESPACE "${_install_jar_exports_NAMESPACE}") if (_install_jar_exports_COMPONENT) set (_COMPONENT COMPONENT ${_install_jar_exports_COMPONENT}) |