UseJava
Этот файл предоставляет поддержку для Java. Предполагается, что FindJava уже загружен. См. FindJava для получения информации о загрузке Java в ваш CMake проект.
Резюме
Creating and Installing JARS add_jar (<target_name> [SOURCES] <source1> [<source2>...] ...) install_jar (<target_name> DESTINATION <destination> [COMPONENT <component>]) install_jni_symlink (<target_name> DESTINATION <destination> [COMPONENT <component>]) Header Generation create_javah ((TARGET <target> | GENERATED_FILES <VAR>) CLASSES <class>... ...) Exporting JAR Targets install_jar_exports (TARGETS <jars>... FILE <filename> DESTINATION <destination> ...) export_jars (TARGETS <jars>... [NAMESPACE <namespace>] FILE <filename>) Finding JARs find_jar (<VAR> NAMES <name1> [<name2>...] [PATHS <path1> [<path2>... ENV <var>]] ...) Creating Java Documentation create_javadoc (<VAR> (PACKAGES <pkg1> [<pkg2>...] | FILES <file1> [<file2>...]) ...)
Создание и установка JAR-файлов
-
add_jar -
Создаёт JAR-файл, содержащий java-объекты и, необязательно, ресурсы:
add_jar(<target_name> [SOURCES] <source1> [<source2>...] [<resource1>...] [RESOURCES NAMESPACE <ns1> <resource1>... [NAMESPACE <nsX> <resourceX>...]... ] [INCLUDE_JARS <jar1> [<jar2>...]] [ENTRY_POINT <entry>] [VERSION <version>] [MANIFEST <manifest>] [OUTPUT_NAME <name>] [OUTPUT_DIR <dir>] [GENERATE_NATIVE_HEADERS <target> [DESTINATION (<dir>|INSTALL <dir> [BUILD <dir>])]] )Эта команда создаёт
<target_name>.jar. Она компилирует заданные<source>файлы и добавляет заданные<resource>файлы в JAR-файл. Исходные файлы могут быть java-файлами или списками файлов (с префиксом@). Если указаны только файлы ресурсов, то создаётся только JAR-файл.-
SOURCES -
Компилирует указанные исходные файлы и добавляет результат в JAR-файл.
Новое в версии 3.4: Поддержка файлов ответов, с префиксом
@. -
RESOURCES -
Новое в версии 3.21.
Добавляет указанные
<resource>файлы в JAR-файл, удаляя путь к исходному файлу и размещая файл под<ns>внутри JAR-файла.Например:
RESOURCES NAMESPACE "/com/my/namespace" "a/path/to/resource.txt"
в результате чего ресурс доступен через
/com/my/namespace/resource.txtвнутри JAR-файла.Ресурсы можно добавить без изменения пространства имён, добавив их в список
SOURCES(оригинальное поведение). В этом случае пути к ресурсам должны быть относительными кCMAKE_CURRENT_SOURCE_DIR. Добавление ресурсов без использования параметраRESOURCESв проектах вне исходного каталога почти наверняка приведёт к путанице.Примечание
Добавление ресурсов через параметр
SOURCESполагается на жёстко заданный список расширений файлов, которые проверяются для определения, компилируются ли они (например, File.java). Файлы с расширениями, соответствующими этим расширениям, компилируются. Файлы, не соответствующие этим расширениям, обрабатываются как ресурсы. Чтобы включить нескомпилированные ресурсы, соответствующие этим расширениям файлов, используйте параметрRESOURCES. -
INCLUDE_JARS -
Список JAR-файлов добавляется в путь класса при компиляции java-исходников, а также в зависимости от целевого объекта.
INCLUDE_JARSтакже принимает и другие имена целевых объектов, созданныеadd_jar(). Для обратной совместимости JAR-файлы, указанные как исходные файлы, игнорируются (так было с момента первой версии этого модуля). -
ENTRY_POINT -
Определяет точку входа в JAR-файл.
-
VERSION -
Добавляет версию в имя выходного целевого объекта.
Следующий пример создаст JAR-файл с именем
shibboleet-1.2.0.jarи создаст символическую ссылкуshibboleet.jar, указывающую на JAR-файл с информацией о версии.add_jar(shibboleet shibbotleet.java VERSION 1.2.0)
-
MANIFEST -
Определяет пользовательский манифест для JAR-файла.
-
OUTPUT_NAME -
Указывает другое имя выходного целевого объекта.
-
OUTPUT_DIR -
Устанавливает каталог, в котором будет создан JAR-файл. Если не указан, используется
CMAKE_CURRENT_BINARY_DIRв качестве каталога вывода. -
GENERATE_NATIVE_HEADERS -
Новое в версии 3.11.
Генерирует файлы заголовков для методов, объявленных как native. Эти файлы обеспечивают соединительную связку, которая позволяет вашим кодам Java и C взаимодействовать. Для удобного использования сгенерированных файлов будет создан целевой объект INTERFACE. Подвариант
DESTINATIONможет быть использован для указания каталога вывода для сгенерированных файлов заголовков.Этот параметр требует, как минимум, версии 1.8 JDK.
Для оптимального использования этого параметра рекомендуется включить модуль JNI до любого вызова
add_jar(). Созданный целевой объект для нативных заголовков затем можно использовать для компиляции исходных кодов C/C++ с помощью командыtarget_link_libraries().find_package(JNI) add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native) add_library(bar bar.cpp) target_link_libraries(bar PRIVATE foo-native)
Новое в версии 3.20: подвариант
DESTINATIONтеперь поддерживает возможность указания разных каталогов вывода дляBUILDиINSTALLшагов. Если каталогBUILDне указан, будет использован по умолчанию.Для экспорта целевого объекта интерфейса, сгенерированного опцией
GENERATE_NATIVE_HEADERS, требуется подвариантINSTALLопцииDESTINATION:add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native DESTINATION INSTALL include) install(TARGETS foo-native EXPORT native) install(DIRECTORY "$<TARGET_PROPERTY:foo-native,NATIVE_HEADERS_DIRECTORY>/" DESTINATION include) install(EXPORT native DESTINATION /to/export NAMESPACE foo)
Некоторые переменные можно установить для настройки поведения
add_jar(), а также компилятора Java:-
CMAKE_JAVA_COMPILE_FLAGS -
Указывает дополнительные флаги для компилятора Java.
-
CMAKE_JAVA_INCLUDE_PATH -
Указывает дополнительные пути к пути класса.
-
CMAKE_JNI_TARGET -
Если целевой объект является библиотекой JNI, установите эту переменную в
TRUEдля включения создания символической ссылки JNI (см. также install_jni_symlink()). -
CMAKE_JAR_CLASSES_PREFIX -
Если необходимо создать несколько JAR-файлов из одного и того же дерева исходных файлов Java, для предотвращения накопления дублирующихся файлов классов в последующих JAR-файлах, установите/сбросьте
CMAKE_JAR_CLASSES_PREFIXперед вызовомadd_jar():set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo) add_jar(foo foo.java) set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar) add_jar(bar bar.java)
Функция
add_jar()устанавливает следующие свойства целевого объекта на<target_name>:-
INSTALL_FILES -
Файлы, которые должны быть установлены. Это используется командой install_jar().
-
JNI_SYMLINK -
Символическая ссылка JNI, которая должна быть установлена. Это используется командой install_jni_symlink().
-
JAR_FILE -
Расположение JAR-файла, чтобы вы могли его включить.
-
CLASSDIR -
Каталог, где можно найти файлы классов. Например, чтобы использовать их с
javah. -
NATIVE_HEADERS_DIRECTORY -
Новое в версии 3.20.
Каталог, где генерируются нативные заголовки. Определяется при указании опции
GENERATE_NATIVE_HEADERS.
-
-
install_jar -
Эта команда устанавливает JAR-файл в указанное место назначения:
install_jar(<target_name> <destination>) install_jar(<target_name> DESTINATION <destination> [COMPONENT <component>])
Эта команда устанавливает
<target_name>файл в указанный<destination>. Она должна вызываться в том же объёме, что и add_jar(), иначе она потерпит неудачу.Новое в версии 3.4: Вторая сигнатура с параметрами
DESTINATIONиCOMPONENT.-
DESTINATION -
Указывает каталог на диске, в который будет установлен файл.
-
COMPONENT -
Указывает имя компонента установки, к которому относится правило установки, например, "runtime" или "development".
Команда
install_jar()устанавливает следующие свойства целевого объекта на<target_name>:-
INSTALL_DESTINATION -
Содержит
<destination>, как описано выше, и используется командой install_jar_exports().
-
-
install_jni_symlink -
Устанавливает символические ссылки JNI для целевого объекта, сгенерированного командой add_jar():
install_jni_symlink(<target_name> <destination>) install_jni_symlink(<target_name> DESTINATION <destination> [COMPONENT <component>])
Эта команда устанавливает
<target_name>JNI символические ссылки в указанный<destination>. Она должна вызываться в том же объёме, что и add_jar(), иначе она потерпит неудачу.Новое в версии 3.4: Вторая сигнатура с параметрами
DESTINATIONиCOMPONENT.-
DESTINATION -
Указывает каталог на диске, в который будет установлен файл.
-
COMPONENT -
Указывает имя компонента установки, к которому относится правило установки, например, "runtime" или "development".
Используйте следующие команды для создания JNI символической ссылки:
set(CMAKE_JNI_TARGET TRUE) add_jar(shibboleet shibbotleet.java VERSION 1.2.0) install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet) install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR}) -
Генерация заголовков
-
create_javah -
Новое в версии 3.4.
Генерирует заголовочные файлы C для Java-классов:
create_javah(TARGET <target> | GENERATED_FILES <VAR> CLASSES <class>... [CLASSPATH <classpath>...] [DEPENDS <depend>...] [OUTPUT_NAME <path>|OUTPUT_DIR <path>] )Устарело начиная с версии 3.11: Эта команда больше не будет поддерживаться начиная с версии 10 JDK из-за удаления инструмента javah. Вместо этого следует использовать команду add_jar(GENERATE_NATIVE_HEADERS).
Создаёт заголовочные файлы C из Java-классов. Эти файлы обеспечивают связующее звено, позволяющее вашим Java- и C-кодам взаимодействовать.
Существует две основные подписи для
create_javah(). Первая подпись возвращает сгенерированные файлы через переменную, указанную опциейGENERATED_FILES. Например:create_javah(GENERATED_FILES files_headers CLASSES org.cmake.HelloWorld CLASSPATH hello.jar )
Вторая подпись для
create_javah()создаёт целевой объект, который инкапсулирует генерацию заголовочных файлов. Например:create_javah(TARGET target_headers CLASSES org.cmake.HelloWorld CLASSPATH hello.jar )
Обе подписи используют одни и те же опции.
-
CLASSES -
Указывает Java-классы, используемые для генерации заголовочных файлов.
-
CLASSPATH -
Указывает различные пути для поиска классов. Здесь можно использовать файлы, JAR-файлы или целевые объекты, созданные командой add_jar.
-
DEPENDS -
Целевые объекты, от которых зависит целевой объект javah.
-
OUTPUT_NAME -
Объединяет получившиеся заголовочные файлы для всех классов, перечисленных в опции
CLASSES, в<path>. Поведение аналогично опции-oинструментаjavah. -
OUTPUT_DIR -
Устанавливает каталог, в котором будут сгенерированы заголовочные файлы. Поведение аналогично опции
-dинструментаjavah. Если не указано, используетсяCMAKE_CURRENT_BINARY_DIRв качестве каталога вывода.
-
Экспорт целевых JAR-файлов
-
install_jar_exports -
Новое в версии 3.7.
Устанавливает файл экспорта целевого объекта:
install_jar_exports(TARGETS <jars>... [NAMESPACE <namespace>] FILE <filename> DESTINATION <destination> [COMPONENT <component>])Эта команда устанавливает файл экспорта целевого объекта
<filename>для указанных целевых JAR-файлов в указанный<destination>каталог. Его функциональность аналогична функциональностиinstall(EXPORT).-
TARGETS -
Список целевых объектов, созданных командой add_jar().
-
NAMESPACE -
Новое в версии 3.9.
Значение
<namespace>будет добавлено как префикс к именам целевых объектов при записи в файл импорта. -
FILE -
Укажите имя файла экспорта.
-
DESTINATION -
Укажите каталог на диске, в который будет установлен файл.
-
COMPONENT -
Укажите имя компонента установки, например, "runtime" или "development", к которому привязано правило установки.
-
-
export_jars -
Новое в версии 3.7.
Записывает файл экспорта целевого объекта:
export_jars(TARGETS <jars>... [NAMESPACE <namespace>] FILE <filename>)Эта команда записывает файл экспорта целевого объекта
<filename>для указанных<jars>целевых объектов. Его функциональность аналогична функциональностиexport().-
TARGETS -
Список целевых объектов, созданных командой add_jar().
-
NAMESPACE -
Новое в версии 3.9.
Значение
<namespace>будет добавлено как префикс к именам целевых объектов при записи в файл импорта. -
FILE -
Укажите имя файла экспорта.
-
Поиск JAR-файлов
-
find_jar -
Находит указанный JAR-файл:
find_jar(<VAR> <name> | NAMES <name1> [<name2>...] [PATHS <path1> [<path2>... ENV <var>]] [VERSIONS <version1> [<version2>]] [DOC "cache documentation string"] )Эта команда используется для поиска полного пути к указанному JAR-файлу. В кэш помещается запись с именем
<VAR>, хранящая результат этой команды. Если полный путь к JAR-файлу найден, результат сохраняется в переменной, и поиск не будет повторён, пока переменная не будет очищена. Если ничего не найдено, результатом будет<VAR>-NOTFOUND, и поиск будет повторён в следующий раз, когдаfind_jar()будет вызван с той же переменной.-
NAMES -
Укажите одно или несколько возможных имён JAR-файла.
-
PATHS -
Укажите каталоги для поиска помимо стандартных расположений. Опция
ENVсчитывает пути из переменной окружения. -
VERSIONS -
Укажите версии JAR-файлов.
-
DOC -
Укажите строку документации для записи в кэш
<VAR>.
-
Создание документации Java
-
create_javadoc -
Создаёт документацию Java на основе файлов и пакетов:
create_javadoc(<VAR> (PACKAGES <pkg1> [<pkg2>...] | FILES <file1> [<file2>...]) [SOURCEPATH <sourcepath>] [CLASSPATH <classpath>] [INSTALLPATH <install path>] [DOCTITLE <the documentation title>] [WINDOWTITLE <the title of the document>] [AUTHOR (TRUE|FALSE)] [USE (TRUE|FALSE)] [VERSION (TRUE|FALSE)] )Команда
create_javadoc()может быть использована для создания документации Java. Существует две основные подписи дляcreate_javadoc().Первая подпись работает с именами пакетов в каталоге с исходными файлами:
create_javadoc(my_example_doc PACKAGES com.example.foo com.example.bar SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}" CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} WINDOWTITLE "My example" DOCTITLE "<h1>My example</h1>" AUTHOR TRUE USE TRUE VERSION TRUE )Вторая подпись для
create_javadoc()работает с заданным списком файлов:create_javadoc(my_example_doc FILES java/A.java java/B.java CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} WINDOWTITLE "My example" DOCTITLE "<h1>My example</h1>" AUTHOR TRUE USE TRUE VERSION TRUE )Обе подписи используют большинство опций. Для более подробной информации обратитесь к странице справки javadoc.
-
PACKAGES -
Укажите Java-пакеты.
-
FILES -
Укажите Java-исходные файлы. Если указаны относительные пути, они относительны к
CMAKE_CURRENT_SOURCE_DIR. -
SOURCEPATH -
Укажите каталог для поиска пакетов. По умолчанию используется каталог
CMAKE_CURRENT_SOURCE_DIR. -
CLASSPATH -
Укажите местоположение файлов классов пользователя. Поведение аналогично опции
-classpathинструментаjavadoc. -
INSTALLPATH -
Укажите место для установки документации Java. Если указано, документация будет установлена в
${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR>. -
DOCTITLE -
Укажите заголовок для верхней части файла сводного обзора. Поведение аналогично опции
-doctitleинструментаjavadoc. -
WINDOWTITLE -
Укажите заголовок для тега HTML
<title>. Поведение аналогично опции-windowtitleинструментаjavadoc. -
AUTHOR -
При указании значения
TRUEвключает текст@authorв сгенерированную документацию. Поведение аналогично опции-authorинструментаjavadoc. -
USE -
При указании значения
TRUEсоздаёт страницы использования класса и пакета. Включает одну страницу использования для каждого документированного класса и пакета. Поведение аналогично опции-useинструментаjavadoc. -
VERSION -
При указании значения
TRUEвключает текст версии в сгенерированную документацию. Поведение аналогично опции-versionинструментаjavadoc.
-
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/module/UseJava.html