1

我正在使用 Dialogic DivaSDK 进行一个项目,以便能够分析电话呼叫。由于 DivaSDK 通过 JNI 支持 Java,我想尝试一下示例。不幸的是:整个 Java 文档不如 C# 完整。所以这似乎就像在浑水里钓鱼一样。在我的第一步中,我想查看示例(Link to DivaSDK with Sample Files)文件并尝试一下。每个示例都有一个必须运行的生成文件。手册中唯一涉及我的问题的部分听起来像这样:

有关如何编译和链接您的应用程序的详细信息,请查看随 Diva SDK 提供的任何示例。在每个示例子目录中,您都会找到一个 makefile,它描述了该应用程序的编译和链接过程。makefile 的评估需要一些 shell 脚本和 makefile 语法的知识,这超出了本文档的范围。

我现在的问题是给定的 makefile 没有按预期的方式工作。我收到错误“No Targets”由于我对 makefile 了解不多,因此我无法弄清楚该文件有什么问题。

#-------------------------------------------------------------------------------
#
#  makefile to geenrate the Diva SDK Java sample "SimpleApp".  This makefile 
#  generate the class files for teh framework and the sample and creates 
#  a SimpleApp.jar that can be executed via jav -jar SimpleApp
#  
#  The makefile assumes that the java development enmvironment is installed and 
#  the java tools are accessable from the command prompt.
#
#-------------------------------------------------------------------------------

FRAMEWORK_PATH=..\..\Framework
FRAMEWORK=$(FRAMEWORK_PATH)\DivaAPI.java $(FRAMEWORK_PATH)\DivaCallBase.java

BIN_DIR=.\bin
SRC_DIR=.\src

TRAGET=SimpleApp

#edited with hint from @Aaron Digulla
all : $(BIN_DIR)\$(TRAGET).jar

SRC=$(SRC_DIR)\SimpleApp.java \
    $(SRC_DIR)\AppCall.java


$(BIN_DIR)\$(TRAGET).jar: $(SRC)
@echo #-----------------------------------------------
@echo # Generate class files
@echo #-----------------------------------------------
javac -d $(BIN_DIR) -sourcepath $(FRAMEWORK_PATH) $(FRAMEWORK) $(SRC)
@echo #-----------------------------------------------
@echo # Generate jar files and clean class and manifest
@echo #-----------------------------------------------
copy $(SRC_DIR)\manifest.txt $(BIN_DIR)
cd $(BIN_DIR)
jar -cvfm $(TRAGET).jar manifest.txt *.class > nul
del *.class
del manifest.txt
cd ..
@echo #-----------------------------------------------
@echo # $(BIN_DIR)\$(TARGET).jar successfully created
@echo #-----------------------------------------------

看来,目标定义是错误的,但我不知道是哪种方式。任何提示将不胜感激。

编辑1:在@Aaron Digulla 的提示下,它工作得更好一点。至少目标被识别。但是现在有一个错误告诉我,没有创建 jar 的规则。

编辑2:嗯......似乎文件路径是错误的。如果我用普通斜杠(“/”)替换一些反斜杠(“\”),编译就会开始。它停在复制虽然......

4

1 回答 1

2

all该错误意味着Makefile中没有目标,并且make懦弱地拒绝继续。

我的猜测是这个 Makefile 应该是从另一个 Makefile 调用的。

将此行添加到 Makefile:

all : $(BIN_DIR)\$(TRAGET).jar

它应该可以工作。如果错误仍然存​​在,请确保您使用 GNU make 或尝试make all

于 2012-12-07T14:49:22.660 回答