Зависимость для add_jar cmake - PullRequest
0 голосов
/ 14 июля 2020

Я фактически генерирую java исходных файлов динамически с помощью генераторов кода. Я хочу создать файл jar, содержащий файлы java, созданные с помощью этого генератора кода.

add_custom_target(lang ALL)

add_custom_command(
        TARGET lang
        COMMAND ${Protobuf_PROTOC_EXECUTABLE} ${CMD_PRG_LNG} --proto_path=${PROTO_FILES} ${COMMONS}/*.proto")

Если я запустил свой cmake без команды add_jar, он успешно запустится и сгенерирует файлы java в соответствующих папках. Но, если я добавлю add_jar

add_jar(${JAR_NAME} ${JAVA_SOURCES})

Приведенная выше инструкция завершится ошибкой со следующим сообщением об ошибке.

Scanning dependencies of target ProtoJava
make[2]: *** No rule to make target '../protoJava/Data.java', needed by 'CMakeFiles/ProtoJava.dir/java_compiled_ProtoJava'.  Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/ProtoJava.dir/all' failed
make[1]: *** [CMakeFiles/ProtoJava.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Как создать файл jar? Я попытался поместить add_jar внутри add_custom_command в ту же цель, что и создание файла java.

add_custom_command(
        TARGET lang_java
        COMMAND add_jar(${JAR_NAME} ${JAVA_SOURCES}))

, но выдает сообщение об ошибке

/bin/sh: 1: Syntax error: word unexpected (expecting ")")
CMakeFiles/lang_java.dir/build.make:57: recipe for target 'lang_java' failed
make[2]: *** [lang_java] Error 2
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/lang_java.dir/all' failed
make[1]: *** [CMakeFiles/lang_java.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Как исправить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...