Я фактически генерирую 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
Как исправить это?