首页 > 解决方案 > add_jar cmake 的依赖

问题描述

我实际上是通过代码生成器动态生成 java 源文件。我想创建包含通过此代码生成器创建的 java 文件的 jar 文件。

add_custom_target(lang ALL)

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

如果我在没有 add_jar 命令的情况下运行我的 cmake,它会成功运行并在相应的文件夹中生成 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

如何解决这个问题?

标签: cmake

解决方案


推荐阅读