我正在与Dialogic DivaSDK合作开展一个能够分析电话的项目。由于DivaSDK通过JNI支持Java,我想尝试一下样本。不幸的是:整个Java文档并不像C#那样完整。所以它似乎像在浑浊的水域钓鱼。 在我的第一步中,我想查看示例(Link to DivaSDK with Sample Files )文件并试用它们。每个样本都有一个必须运行的makefile。手册中唯一可以解决问题的部分听起来像这样:
有关如何编译和链接您的应用程序的详细信息,请查看Diva SDK提供的任何示例。在每个sample子目录中,您都会找到一个makefile,它描述了该应用程序的编译和链接过程。对makefile的评估需要一些shell脚本和makefile语法的知识,这超出了本文档的范围。
我现在的问题是给定的makefile不能按预期的方式工作。我得到错误“没有目标”由于我对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 #-----------------------------------------------
看来,目标定义是错误的,但我不知道以哪种方式。任何提示都将非常感激。
edit1:借助@Aaron Digulla的提示,它的效果会更好一些。至少目标被识别。但现在有一个错误告诉我,没有规则来创建jar。
edit2:嗯......似乎文件路径错了。如果我用普通斜杠(“/”)替换一些反斜杠(“\”),则编译开始。它虽然停在副本......
答案 0 :(得分:2)
错误表示Makefile中没有目标all
,make
懦弱拒绝继续。
我的猜测是,这个Makefile应该从另一个Makefile中调用。
将此行添加到Makefile:
all : $(BIN_DIR)\$(TRAGET).jar
它应该有效。如果错误仍然存在,请确保使用GNU make或尝试make all