LibreOffice(23)FirstStepsのMakefileの出力ログ

2014-02-16

旧ブログ

t f B! P L

前の関連記事:LibreOffice(22)FirstStepsのMakefileで使うJDKのコマンド


FirstStepsのMakefileを実行したコマンドラインの結果をみてみます。LibreOffice(19)Javaの例をmakeするのコマンドウィンドウで出力された結果です。

コマンドウィンドウの出力結果


19行目以降がmakeが出力したものです。
 ******************************************************************
 *
 * SDK environment is prepared for Windows
 *
 * SDK = C:\PROGRA~2\LIBREO~1\sdk
 * Office = C:\PROGRA~2\LIBREO~1
 * URE = C:\PROGRA~2\LIBREO~1\URE
 * Make = C:\mingw\bin
 * Zip = C:\mingw\bin
 * C++ Compiler = C:\PROGRA~2\MICROS~1.0\VC\bin
 * C# and VB.NET compilers = C:\Windows\MICROS~1.NET\FRAMEW~2\V20~1.507
 * Java = C:\Java\JDK17~1.0_1
 * Special Output directory = c:\LIBREO~1.1_S
 * Auto deployment = NO
 *
 ******************************************************************

C:\Program Files (x86)\LibreOffice 4\sdk\examples\DevelopersGuide\FirstStepsのMakefileをmakeしますか?(y/n)y
'..' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.class] Error 1 (ignored)
"C:\Java\JDK17~1.0_1/bin/javac"  -classpath "C:\PROGRA~2\LIBREO~1\URE\java\juh.jar;C:\PROGRA~2\LIBREO~1\URE\java\jurt.jar;C:\PROGRA~2\LIBREO~1\URE\java\ridl.jar;C:\PROGRA~2\LIBREO~1\URE\java\unoloader.jar;C:\PROGRA~2\LIBREO~1\program\classes\unoil.jar;c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples" -d c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples FirstUnoContact.java
del c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples\FirstUnoContact.jar
c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples\FirstUnoContact.jar が見つかりませんでした。
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.jar] Error 1 (ignored)
cd c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples && "C:\Java\JDK17~1.0_1/bin/jar" cvfm FirstUnoContact.jar FirstUnoContact.mf FirstUnoContact.class
マニフェストが追加されました
FirstUnoContact.classを追加中です(入=1295)(出=753)(41%収縮されました)
"C:\Java\JDK17~1.0_1/bin/jar" uvf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.jar -C ../../../classes com/sun/star/lib/loader/Loader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/Loader$CustomURLClassLoader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder$StreamGobbler.class -C ../../../classes com/sun/star/lib/loader/WinRegKey.class -C ../../../classes com/sun/star/lib/loader/WinRegKeyException.class -C ../../../classes win/unowinreg.dll
com/sun/star/lib/loader/Loader.classを追加中です(入=9278)(出=4377)(52%収縮されました)
com/sun/star/lib/loader/Loader$Drain.classを追加中です(入=739)(出=445)(39%収縮されました)
com/sun/star/lib/loader/Loader$CustomURLClassLoader.classを追加中です(入=1248)(出=636)(49%収縮されました)
com/sun/star/lib/loader/InstallationFinder.classを追加中です(入=8900)(出=4866)(45%収縮されました)
com/sun/star/lib/loader/InstallationFinder$StreamGobbler.classを追加中です(入=960)(出=542)(43%収縮されました)
com/sun/star/lib/loader/WinRegKey.classを追加中です(入=4779)(出=2430)(49%収縮されました)
com/sun/star/lib/loader/WinRegKeyException.classを追加中です(入=475)(出=287)(39%収縮されました)
win/unowinreg.dllを追加中です(入=5632)(出=1462)(74%収縮されました)
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.mf] Error 1 (ignored)
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.class] Error 1 (ignored)
"C:\Java\JDK17~1.0_1/bin/javac"  -classpath "C:\PROGRA~2\LIBREO~1\URE\java\juh.jar;C:\PROGRA~2\LIBREO~1\URE\java\jurt.jar;C:\PROGRA~2\LIBREO~1\URE\java\ridl.jar;C:\PROGRA~2\LIBREO~1\URE\java\unoloader.jar;C:\PROGRA~2\LIBREO~1\program\classes\unoil.jar;c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples" -d c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples FirstLoadComponent.java
del c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples\FirstLoadComponent.jar
c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples\FirstLoadComponent.jarが見つかりませんでした。
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.jar] Error 1 (ignored)
cd c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples && "C:\Java\JDK17~1.0_1/bin/jar" cvfm FirstLoadComponent.jar FirstLoadComponent.mf FirstLoadComponent.class
マニフェストが追加されました
FirstLoadComponent.classを追加中です(入=4516)(出=2306)(48%収縮されました)
"C:\Java\JDK17~1.0_1/bin/jar" uvf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.jar -C ../../../classes com/sun/star/lib/loader/Loader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/Loader$CustomURLClassLoader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder$StreamGobbler.class -C ../../../classes com/sun/star/lib/loader/WinRegKey.class -C ../../../classes com/sun/star/lib/loader/WinRegKeyException.class -C ../../../classes win/unowinreg.dll
com/sun/star/lib/loader/Loader.classを追加中です(入=9278)(出=4377)(52%収縮されました)
com/sun/star/lib/loader/Loader$Drain.classを追加中です(入=739)(出=445)(39%収縮されました)
com/sun/star/lib/loader/Loader$CustomURLClassLoader.classを追加中です(入=1248)(出=636)(49%収縮されました)
com/sun/star/lib/loader/InstallationFinder.classを追加中です(入=8900)(出=4866)(45%収縮されました)
com/sun/star/lib/loader/InstallationFinder$StreamGobbler.classを追加中です(入=960)(出=542)(43%収縮されました)
com/sun/star/lib/loader/WinRegKey.classを追加中です(入=4779)(出=2430)(49%収縮されました)
com/sun/star/lib/loader/WinRegKeyException.classを追加中です(入=475)(出=287)(39%収縮されました)
win/unowinreg.dllを追加中です(入=5632)(出=1462)(74%収縮されました)
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsEx
amples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.mf] Error 1 (ignored)
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.class] Error 1 (ignored)
"C:\Java\JDK17~1.0_1/bin/javac"  -classpath "C:\PROGRA~2\LIBREO~1\URE\java\juh.jar;C:\PROGRA~2\LIBREO~1\URE\java\jurt.jar;C:\PROGRA~2\LIBREO~1\URE\java\ridl.jar;C:\PROGRA~2\LIBREO~1\URE\java\unoloader.jar;C:\PROGRA~2\LIBREO~1\program\classes\unoil.jar;c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples" -d c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples HelloTextTableShape.java
del c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples\HelloTextTableShape.jar
c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples\HelloTextTableShape.jarが見つかりませんでした。
mkdir c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples
サブディレクトリまたはファイル c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples は既に存在します。
mingw32-make: [c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.jar] Error 1 (ignored)
cd c:\LIBREO~1.1_S\WINexample.out\class\FirstStepsExamples && "C:\Java\JDK17~1.0_1/bin/jar" cvfm HelloTextTableShape.jar HelloTextTableShape.mf HelloTextTableShape.class
マニフェストが追加されました
HelloTextTableShape.classを追加中です(入=8572)(出=4348)(49%収縮されました)
"C:\Java\JDK17~1.0_1/bin/jar" uvf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.jar -C ../../../classes com/sun/star/lib/loader/Loader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/Loader$CustomURLClassLoader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder$StreamGobbler.class -C ../../../classes com/sun/star/lib/loader/WinRegKey.class -C ../../../classes com/sun/star/lib/loader/WinRegKeyException.class -C ../../../classes win/unowinreg.dll
com/sun/star/lib/loader/Loader.classを追加中です(入=9278)(出=4377)(52%収縮されました)
com/sun/star/lib/loader/Loader$Drain.classを追加中です(入=739)(出=445)(39%収縮されました)
com/sun/star/lib/loader/Loader$CustomURLClassLoader.classを追加中です(入=1248)(出=636)(49%収縮されました)
com/sun/star/lib/loader/InstallationFinder.classを追加中です(入=8900)(出=4866)(45%収縮されました)
com/sun/star/lib/loader/InstallationFinder$StreamGobbler.classを追加中です(入=960)(出=542)(43%収縮されました)
com/sun/star/lib/loader/WinRegKey.classを追加中です(入=4779)(出=2430)(49%収縮されました)
com/sun/star/lib/loader/WinRegKeyException.classを追加中です(入=475)(出=287)(39%収縮されました)
win/unowinreg.dllを追加中です(入=5632)(出=1462)(74%収縮されました)
--------------------------------------------------------------------------------

Please use one of the following commands to execute the examples!
-
mingw32-make FirstUnoContact.run
mingw32-make FirstLoadComponent.run
mingw32-make HelloTextTableShape.run
--------------------------------------------------------------------------------

続行するには何かキーを押してください . . .
'..' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
これはC:\Program Files (x86)\LibreOffice 4\sdk\settings\settings.mkにでてくるPLATFORM := $(shell $(PRJ)/config.guess | cut -d"-" -f3,4)の部分が出しているエラーです。

$(shell コマンド)でコマンドラインにコマンドが渡されてその結果が返されます。

この場合は../../../config.guess | cut -d"-" -f3,4というコマンドがコマンドウィンドウに渡されるのですがWindowsにはこのようなコマンドはないのでエラーになっています。

なのでsettings.mkのこの部分では変数PLATFORMには何も入りませんが次のコードでその場合はwindowsと代入するようになっているので問題ありません。

ほかにでているエラーは既に存在するディレクトリを作成しようとしたり、存在しないjarファイルを削除しようとしたりしているものなのでこれらも問題ありません。

FirstStepsのMakefileの変数を展開したもの


FirstStepsのMakefileの# Targets以降の自動変数以外の変数を展開してみます。
# Targets
.PHONY: ALL
ALL : FirstStepsExamples

include ../../../settings/stdtarget.mk

c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.class : %.java
 -mkdir $(subst /,\,$(@D))
 "C:\Java\JDK17~1.0_1/bin/javac" -classpath "C:\PROGRA~2\LIBREO~1\URE\java\juh.jar;C:\PROGRA~2\LIBREO~1\URE\java\jurt.jar;C:\PROGRA~2\LIBREO~1\URE\java\ridl.jar;C:\PROGRA~2\LIBREO~1\URE\java\unoloader.jar;C:\PROGRA~2\LIBREO~1\program\classes\unoil.jar;c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples" -d c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples $<

c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.mf :
 -mkdir $(subst /,\,$(@D))
 @echo Main-Class: com.sun.star.lib.loader.Loader> $@
 @echo.>> $@
 @echo Name: com/sun/star/lib/loader/Loader.class>> $@
 @echo Application-Class: $*>> $@

c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.jar : c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.mf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.class
 -del $(subst \\,\,$(subst /,\,$@))
 -mkdir $(subst /,\,$(@D))
 +cd $(subst /,\,c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples) && "C:\Java\JDK17~1.0_1/bin/jar" cvfm $(@F) $*.mf $*.class
 +"C:\Java\JDK17~1.0_1/bin/jar" uvf $@ -C ../../../classes com/sun/star/lib/loader/Loader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/Loader$CustomURLClassLoader.class -C ../../../classes com/sun/star/lib/loader/Loader$Drain.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder.class -C ../../../classes com/sun/star/lib/loader/InstallationFinder$StreamGobbler.class -C ../../../classes com/sun/star/lib/loader/WinRegKey.class -C ../../../classes com/sun/star/lib/loader/WinRegKeyException.class -C ../../../classes win/unowinreg.dll

c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.jar : c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.mf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.class
c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.jar : c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.mf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.class
c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.jar : c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.mf c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.class

FirstStepsExamples : c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.jar c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstLoadComponent.jar c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/HelloTextTableShape.jar
 @echo --------------------------------------------------------------------------------
 @echo Please use one of the following commands to execute the examples!
 @echo -
 @echo mingw32-make FirstUnoContact.run
 @echo mingw32-make FirstLoadComponent.run
 @echo mingw32-make HelloTextTableShape.run
 @echo --------------------------------------------------------------------------------

%.run: c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.jar
 "C:\Java\JDK17~1.0_1/bin/java" -Dcom.sun.star.lib.loader.unopath="C:\PROGRA~2\LIBREO~1\program" -jar $<

.PHONY: clean
clean :
 -rd /S /Q $(subst /,\,c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples)
自動変数についてはLibreOffice(21)makeについてちょっとお勉強 その2で学習しました。

3行目が最初のルールになります。

ターゲットALLの依存関係であるFirstStepsExamplesがターゲットになっているルールを探すと28行目にあります。

このルールの依存関係にあるファイルがターゲットになっているルールを探すと24,25,26行目にあります。

で、さらにこれらのルールの依存関係にあるファイルがターゲットになっているルールを探すと18行目と11行目にあります。

18行目の依存関係にあるファイルがターゲットになっているルールは7行目にあります。

ということで7行目のルールのコマンドから実行されます。

あとはターゲットが完成したらそれが依存関係になっているルールが実行されていきます。

コマンドの前にある"-"はエラーがでてもそれを無視して次のコマンドを実行するというものでした。

では"+"はその逆にエラーでとまるという意味かというとそうではありまえん。

エラーで止まるようにするには"-"をつかなければよいだけです。

"+"はmakeのオプションの"-n","-t","-q"が"+"が先頭にあるコマンドには影響させないという記号です。

21行目のコマンド行の中途にある"&&"はその左にあるコマンドが実行されないとその右のコマンドが実行されない、という記号です。

完成したjarファイルを実行する方法


--------------------------------------------------------------------------------

Please use one of the following commands to execute the examples!
-
mingw32-make FirstUnoContact.run
mingw32-make FirstLoadComponent.run
mingw32-make HelloTextTableShape.run
--------------------------------------------------------------------------------
コンパイルの最後に表示されるこの方法で完成したjarファイルが実行できます。

ただしMakefileの中で変数を展開しないといけないのでsetsdkenv_windows.batをその前に実行しておかないといけません。

makeの後に引数をつけるとその引数にあうターゲットのルールを指定して実行できます。

現在makeはmingw32-make.exeを使っているのでmingw32-make FirstUnoContact.runとするとMakefileの中のFirstUnoContact.runというターゲットのあるルールが実行されることになります。
%.run: c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/%.jar
 "C:\Java\JDK17~1.0_1/bin/java" -Dcom.sun.star.lib.loader.unopath="C:\PROGRA~2\LIBREO~1\program" -jar $<
FirstUnoContact.runで実行されるルールはこの型ルールになります。

自動変数を展開してコマンド部分を取り出すと以下のようになります。
"C:\Java\JDK17~1.0_1/bin/java" -Dcom.sun.star.lib.loader.unopath="C:\PROGRA~2\LIBREO~1\program" -jar c:/LIBREO~1.1_S/WINexample.out/class/FirstStepsExamples/FirstUnoContact.jar
さあ、これをコマンドウィンドウで実行するとうまくいくはず、、、

と思ったら何も表示されません。

エラーもでないのですけどSystem.out.println("Connected to a running office ...");でまず表示されるはずの"Connected to a running office ..."もなにも表示されません。

何かはしているようなのですが何も表示されずに次のプロンプトが表示されて終わります。

FirstUnoContact.jarだけでなくFirstLoadComponent.jarとHelloTextTableShape.jarも同じ結果です。

ここまできたのにちょっとお手上げです。

Windowsではうまく動かないのかもしれません。

(H25.2.20追記。Windows7 64bitではJavaのbootstrap()は動かないようでJavaの例はソケット接続に修正しないと動きません。詳しくはLibreOffice(27)Java-UNO Bootstrapはやめてソケット接続を使おうへ。)

参考にしたサイト


GNU make 日本語訳(Coop編) - shell 関数
MS-DOS/MS-Windowsのcommand.com/cmd.exeではちゃんと動かないようです。

GNU make 日本語訳(Coop編) -コマンドを実行する代わりに…
makeのオプションの"-n","-t","-q"は"+"が先頭にあるコマンドには無効です。

「&&」 - DOS コマンド一覧
"&&"の左にあるコマンドが実行されないと"&&"の右のコマンドが実行されません。

次の関連記事:LibreOffice(24)NetBeans7でJavaのマクロを作成

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ