linuxBean14.04(29)LibreOfficeDev5.0SDKの例を一括でmakeする

前の関連記事:linuxBean14.04(28)シェルスクリプトbashdb


linuxBean14.04(25)NetBeans8とLibreOffice5のインストールでインストールしたLibreOffice5.0.0.0beta1のSDK付属の/opt/libreofficedev5.0/sdk/examplesを一括makeしてしまいます。

setsdkenv_unixでsetsdkenv_unix.shを作成する


LibreOffice(61)linuxBeanでJavaの例をmakeと同様にします。

linuxBean14.04にはzipはすでにインストール済ですのでg++のみSynapticパッケージマネージャでインストールします。


g++-4.8が一緒にインストールされました。

ファイルマネージャで/opt/libreofficedev5.0/sdkからツール→現在のフォルダを端末で開く。

sh setsdkenv_unix と入力してEnter。

必要なファイルはすべてインストール済のはずなのですべての質問にEnterキーを押していくだけでセットアップが完了するはずです。

ただし、最後にやるMakefileを一括してmakeするmake_all.shを使うときは「Automatic deployment of UNO components (YES/NO) [YES]:」はNOにしておかないといけません。

pq@pq-VirtualBox:/opt/libreofficedev5.0/sdk$ sh setsdkenv_unix

 ************************************************************************
 *
 *  You have to configure your SDK environment first before you can
 *  use it. The configuration has to be done only once.
 *
 ************************************************************************

 Enter the Office installation directory [/opt/libreofficedev5.0/sdk/..]: 
 Enter GNU make (3.79.1 or higher) tools directory [/usr/bin]: 
 Enter zip (2.3 or higher) tool directory [/usr/bin]: 
 Enter cat tool directory [/bin]: 
 Enter sed tool directory [/bin]: 
 C++ compilers where for example a language binding exist:
  - Solaris, Sun WorkShop 6 update 1 C++ 5.2 2000/09/11 or higher
  - Linux, GNU C++ compiler, gcc version 4.0.1 or higher
  - MacOS, GNU C++ compiler, gcc version 4.0.1 or higher
 Enter the directory of the C++ compiler, the directory
 where the compiler is located (optional) [/usr/bin]: 
 Enter Java SDK (1.5, recommendation is 1.6 or higher) installation directory  (optional) [/usr]: 
 Default output directory is in your HOME directory.
 Enter an existent directory if you prefer a different output directory (optional) [/home/pq]: 
 Automatic deployment of UNO components (YES/NO) [YES]: 

 ************************************************************************
 * ... your SDK environment has been prepared.
 * For each time you want to use this configured SDK environment, you
 * have to run the "setsdkenv_unix" script file!
 * Alternatively can you source one of the scripts
 *   "/home/pq/libreoffice5.0_sdk/pq-VirtualBox/setsdkenv_unix.sh"
 * to get an environment without starting a new shell.
 ************************************************************************


 ************************************************************************
 *
 * SDK environment is prepared for Linux
 *
 * SDK = /opt/libreofficedev5.0/sdk
 * Office = /opt/libreofficedev5.0/sdk/..
 * Make = /usr/bin
 * Zip = /usr/bin
 * cat = /bin
 * sed = /bin
 * C++ Compiler = /usr/bin
 * Java = /usr
 * SDK Output directory = /home/pq/libreoffice5.0_sdk
 * Auto deployment = YES
 *
 ************************************************************************
~/libreoffice5.0_sdk/pq-VirtualBox(マシン名)にsetsdkenv_unix.shができあがります。

Geanyのビルドコマンドにsetsdkenv_unix.shを設定する


linuxBean14.04(7)GeanyでLibreOfficeのPythonマクロ編集のようにGeanyでMakefileを開いた状態からmakeできるようにビルドコマンドを設定します。

%pはプロジェクトの基本パス、%dはGeanyで開いているソースファイルがあるディレクトリへのパス、%fはそのファイル名、%eは拡張子を除いたファイル名、を表します。

GeanyでMakefileを開いた状態でビルド→ビルドコマンドの設定。


「Makeコマンド」の1に以下を入力しました。

xfce4-terminal -e "/opt/libreofficedev5.0/sdk/setsdkenv_unix" --working-directory="%d" 

このコマンドを実行するとsetsdkenv_unixが実行した状態でTerminalが起動します。

Geanyのコンパイラタブには「セッションマネージャーへの接続に失敗しました」とでますがTerminal内の動作には支障はないようです。

xfce4-terminalではなくx-terminal-emulatorではうまくいきませんでした。

Makefileが書込のパーミッションのないフォルダにあるときは「コマンドを実行」では開始スクリプトが作成できないという理由でうまくいきませんでした。

Makefileのリストを抽出する


/opt/libreofficedev5.0/sdk/examples以下のMakefileをfind -name Makefileで抽出しました。
./cpp/complextoolbarcontrols/Makefile  #complextoolbarcontrols
./cpp/remoteclient/Makefile  #Remote client
./cpp/counter/Makefile  #Counter
./cpp/DocumentLoader/Makefile  #DocumentLoader
./OLE/activex/Makefile  #ActiveX Control
./python/toolpanel/Makefile  #ToolPanelPoc
./CLI/CSharp/Spreadsheet/Makefile  #Spreadsheet Example
./CLI/VB.NET/WriterDemo/Makefile  #WriterDemo
./DevelopersGuide/UCB/Makefile  #ChildrenRetriever,DataStreamComposer,DataStreamRetriever,Helper,MyActiveDataSink,PropertiesComposer,PropertiesRetriever,ResourceCreator,ResourceManager,ResourceRemover
./DevelopersGuide/FirstSteps/Makefile  #FirstUnoContact,FirstLoadComponent,HelloTextTableShape
./DevelopersGuide/Spreadsheet/Makefile  #ExampleAddIn,ExampleDataPilotSource,GeneralTableSample,SpreadsheetDocHelper,SpreadsheetSample,ViewSample
./DevelopersGuide/Text/Makefile  #TextDocuments
./DevelopersGuide/OfficeDev/DesktopEnvironment/Makefile  #CustomizeView,Desk,DocumentView,FunctionHelper,IOnewayLink,IShutdownListener,Interceptor,JavaWindowPeerFake,NativeView,OfficeConnect,OnewayExecutor,StatusListener,StatusView,ViewContainer
./DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/windows/Makefile
./DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/unix/Makefile
./DevelopersGuide/OfficeDev/PathSettings/Makefile  #PathsettingsTest
./DevelopersGuide/OfficeDev/Linguistic/Makefile  #LinguisticExamples,OneInstanceFactory,PropChgHelper,PropChgHelper_Hyph,PropChgHelper_Spell,SampleHyphenator,SampleSpellChecker,SampleThesaurus,XHyphenatedWord_impl,XMeaning_impl,XPossibleHyphens_impl,XSpellAlternatives_impl
./DevelopersGuide/OfficeDev/Makefile  #OfficeConnect,ContextMenuInterceptor,MenuElement,Number_Formats
./DevelopersGuide/OfficeDev/PathSubstitution/Makefile  #PathSubstitutionTest
./DevelopersGuide/OfficeDev/DisableCommands/Makefile  #DisableCommandsTest
./DevelopersGuide/OfficeDev/Clipboard/Makefile  #Clipboard,ClipboardListener,ClipboardOwner,TextTransferable
./DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/Makefile  #AsciiReplaceFilter,FilterOptions,TypeDetection.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_java/Makefile  #FlatXml,FlatXmlFilter_java.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/Makefile  #filterdetect.cxx,filterdetect.hxx,fdcomp.cxx,FlatXmlTypeDetection.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/Makefile  #FlatXml.cxx,FlatXmlFilter_cpp.xcu
./DevelopersGuide/OfficeDev/TerminationTest/Makefile  #TerminationTest,TerminateListener
./DevelopersGuide/Components/SimpleLicense/Makefile  #description.xml
./DevelopersGuide/Components/Addons/JobsAddon/Makefile  #AsyncJob,Jobs.xcu,Addons.xcu
./DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/Makefile  #addon.cxx,addon.hxx,component.cxx,ProtocolHandler.xcu,Addons.xcu
./DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/Makefile  #ProtocolHandlerAddon,ProtocolHandler.xcu,Addons.xcu
./DevelopersGuide/Components/CppComponent/Makefile  #TestCppComponent.cxx,service1_impl.cxx,service2_impl.cxx
./DevelopersGuide/Components/JavaComponent/Makefile  #TestJavaComponent,TestComponentA,TestComponentB,TestServiceProvider
./DevelopersGuide/Components/Thumbs/Makefile
./DevelopersGuide/Components/Thumbs/org/openoffice/test/Makefile  #ImageShrink
./DevelopersGuide/Components/Thumbs/org/openoffice/comp/test/Makefile  #Thumbs
./DevelopersGuide/Components/dialogcomponent/Makefile  #DialogComponent.java,XTestDialogHandler.idl,TestDialogHandler.idl,DialogComponent.odt
./DevelopersGuide/Drawing/Makefile  #ChangeOrderDemo,ControlAndSelectDemo,CustomShowDemo,DrawViewDemo,DrawingDemo, FillAndLineStyleDemo,GluePointDemo,GraphicExportDemo,Helper,LayerDemo,ObjectTransformationDemo,Organigram,PageHelper,PresentationDemo,ShapeHelper,StyleDemo,TextDemo
./DevelopersGuide/Extensions/DialogWithHelp/Makefile
./DevelopersGuide/Config/Makefile  #ConfigExamples
./DevelopersGuide/GUI/Makefile  #DialogDocument,MessageBox,UnoDialogSample,UnoDialogSample2,UnoMenu,UnoMenu2,ImageControlSample2
./DevelopersGuide/ScriptingFramework/ScriptSelector/Makefile  #ScriptSelector
./DevelopersGuide/ScriptingFramework/SayHello/Makefile  #SayHello
./DevelopersGuide/Database/Makefile  #CodeSamples,OpenQuery,RowSet,RowSetEventListener,Sales,SalesMan,sdbcx
./DevelopersGuide/Database/DriverSkeleton/Makefile  #OSubComponent.hxx,OTypeInfo.hxx,SConnection.hxx,SConnection.cxx,SDatabaseMetaData.hxx,SDatabaseMetaData.cxx,SDriver.hxx,SDriver.cxx,SPreparedStatement.hxx,SPreparedStatement.cxx,SResultSet.hxx,SResultSet.cxx,SResultSetMetaData.hxx,SResultSetMetaData.cxx,SServices.cxx,SStatement.hxx,SStatement.cxx,propertyids.hxx,propertyids.cxx
./DevelopersGuide/OfficeBean/Makefile  #OOoBeanViewer
./DevelopersGuide/BasicAndDialogs/CreatingDialogs/Makefile  #SampleDialog
./DevelopersGuide/BasicAndDialogs/ToolkitControls/Makefile  #ToolkitControls
./DevelopersGuide/Charts/Makefile  #CalcHelper,ChartHelper,ChartInCalc,ChartInDraw,ChartInWriter,Helper,JavaSampleChartAddIn,ListenAtCalcRangeInDraw,SelectionChangeListener
./DevelopersGuide/Forms/Makefile  #BooleanValidator,ButtonOperator,ComponentTreeTraversal,ControlLock, ControlValidation,ControlValidator, DataAwareness,DateValidator,DocumentBasedExample,DocumentHelper,DocumentType,DocumentViewHelper,FLTools,FormLayer,GridFieldValidator,InteractionRequest,KeyGenerator,ListSelectionValidator,NumericValidator,SingleControlValidation,SpreadsheetDocument,SpreadsheetValueBinding,SpreadsheetView,TableCellTextBinding,TextValidator,TimeValidator,UNO,ValueBinding,WaitForInput
./DevelopersGuide/ProfUNO/CppBinding/Makefile  #office_connect.cxx,string_samples.cxx
./DevelopersGuide/ProfUNO/SimpleBootstrap_cpp/Makefile  #SimpleBootstrap_cpp.cxx
./DevelopersGuide/ProfUNO/SimpleBootstrap_java/Makefile  #SimpleBootstrap_java.java,manifest.mf
./DevelopersGuide/ProfUNO/Lifetime/Makefile  #MyUnoObject,object_lifetime.cxx 
./DevelopersGuide/ProfUNO/InterprocessConn/Makefile  #ConnectionAwareClient,UrlResolver
./java/Spreadsheet/Makefile  #CalcAddins,ChartTypeChange,EuroAdaption,SCalc
./java/Text/Makefile  #BookmarkInsertion,HardFormatting,SWriter,StyleCreation,StyleInitialization,TextDocumentStructure,TextReplace,GraphicsInserter,WriterSelector
./java/MinimalComponent/Makefile  #MinimalComponent
./java/EmbedDocument/EmbeddedObject/Makefile  #EmbeddedObject
./java/Drawing/Makefile  #SDraw
./java/PropertySet/Makefile  #PropTest
./java/DocumentHandling/Makefile  #DocumentConverter,DocumentLoader,DocumentPrinter,DocumentSaver
./java/ToDo/Makefile  #ToDo
./java/Inspector/Makefile  #Object Inspector
/opt/libreofficedev5.0/sdk/examples/DevelopersGuide/examples.htmlに載っている対応する例の名前をコメントに追記しました。

grep -r "\$(MAKE) -C" で他のMakefileを呼び出しているMakefileを探します。
./DevelopersGuide/OfficeDev/DesktopEnvironment/Makefile
./DevelopersGuide/Components/Thumbs/Makefile
この二つのMakefileに$(MAKE) -C $@がでてきました。

それぞれのMakefileを開いてGeanyのビルドコマンドからsetsdkenvを実行してmake -n | grep "make -C"でmake -Cの結果を抽出してみました。

pq@pq-VirtualBox:/opt/libreofficedev5.0/sdk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment$ make -n | grep "make -C"
make -C nativelib/unix

./DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/unix/Makefileが呼び出されていることがわかります。

./DevelopersGuide/OfficeDev/DesktopEnvironment/nativelib/windows/Makefileはwindows用なので使われないのでしょう。

pq@pq-VirtualBox:/opt/libreofficedev5.0/sdk/examples/DevelopersGuide/Components/Thumbs$ make -n | grep "make -C"
make -C org/openoffice/test  
make -C org/openoffice/comp/test

./DevelopersGuide/Components/Thumbs/org/openoffice/test/Makefile
./DevelopersGuide/Components/Thumbs/org/openoffice/comp/test/Makefile
この二つが呼び出されています。

ということでSDK付属の例をすべてmakeするためのMakefileは以下の59個ということになります。
./cpp/complextoolbarcontrols/Makefile  #complextoolbarcontrols
./cpp/remoteclient/Makefile  #Remote client
./cpp/counter/Makefile  #Counter
./cpp/DocumentLoader/Makefile  #DocumentLoader
./OLE/activex/Makefile  #ActiveX Control
./python/toolpanel/Makefile  #ToolPanelPoc
./CLI/CSharp/Spreadsheet/Makefile  #Spreadsheet Example
./CLI/VB.NET/WriterDemo/Makefile  #WriterDemo
./DevelopersGuide/UCB/Makefile  #ChildrenRetriever,DataStreamComposer,DataStreamRetriever,Helper,MyActiveDataSink,PropertiesComposer,PropertiesRetriever,ResourceCreator,ResourceManager,ResourceRemover
./DevelopersGuide/FirstSteps/Makefile  #FirstUnoContact,FirstLoadComponent,HelloTextTableShape
./DevelopersGuide/Spreadsheet/Makefile  #ExampleAddIn,ExampleDataPilotSource,GeneralTableSample,SpreadsheetDocHelper,SpreadsheetSample,ViewSample
./DevelopersGuide/Text/Makefile  #TextDocuments
./DevelopersGuide/OfficeDev/DesktopEnvironment/Makefile  #CustomizeView,Desk,DocumentView,FunctionHelper,IOnewayLink,IShutdownListener,Interceptor,JavaWindowPeerFake,NativeView,OfficeConnect,OnewayExecutor,StatusListener,StatusView,ViewContainer
./DevelopersGuide/OfficeDev/PathSettings/Makefile  #PathsettingsTest
./DevelopersGuide/OfficeDev/Linguistic/Makefile  #LinguisticExamples,OneInstanceFactory,PropChgHelper,PropChgHelper_Hyph,PropChgHelper_Spell,SampleHyphenator,SampleSpellChecker,SampleThesaurus,XHyphenatedWord_impl,XMeaning_impl,XPossibleHyphens_impl,XSpellAlternatives_impl
./DevelopersGuide/OfficeDev/Makefile  #OfficeConnect,ContextMenuInterceptor,MenuElement,Number_Formats
./DevelopersGuide/OfficeDev/PathSubstitution/Makefile  #PathSubstitutionTest
./DevelopersGuide/OfficeDev/DisableCommands/Makefile  #DisableCommandsTest
./DevelopersGuide/OfficeDev/Clipboard/Makefile  #Clipboard,ClipboardListener,ClipboardOwner,TextTransferable
./DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/Makefile  #AsciiReplaceFilter,FilterOptions,TypeDetection.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_java/Makefile  #FlatXml,FlatXmlFilter_java.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/Makefile  #filterdetect.cxx,filterdetect.hxx,fdcomp.cxx,FlatXmlTypeDetection.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/Makefile  #FlatXml.cxx,FlatXmlFilter_cpp.xcu
./DevelopersGuide/OfficeDev/TerminationTest/Makefile  #TerminationTest,TerminateListener
./DevelopersGuide/Components/SimpleLicense/Makefile  #description.xml
./DevelopersGuide/Components/Addons/JobsAddon/Makefile  #AsyncJob,Jobs.xcu,Addons.xcu
./DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/Makefile  #addon.cxx,addon.hxx,component.cxx,ProtocolHandler.xcu,Addons.xcu
./DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/Makefile  #ProtocolHandlerAddon,ProtocolHandler.xcu,Addons.xcu
./DevelopersGuide/Components/CppComponent/Makefile  #TestCppComponent.cxx,service1_impl.cxx,service2_impl.cxx
./DevelopersGuide/Components/JavaComponent/Makefile  #TestJavaComponent,TestComponentA,TestComponentB,TestServiceProvider
./DevelopersGuide/Components/Thumbs/Makefile  #ImageShrink,Thumbs
./DevelopersGuide/Components/dialogcomponent/Makefile  #DialogComponent.java,XTestDialogHandler.idl,TestDialogHandler.idl,DialogComponent.odt
./DevelopersGuide/Drawing/Makefile  #ChangeOrderDemo,ControlAndSelectDemo,CustomShowDemo,DrawViewDemo,DrawingDemo, FillAndLineStyleDemo,GluePointDemo,GraphicExportDemo,Helper,LayerDemo,ObjectTransformationDemo,Organigram,PageHelper,PresentationDemo,ShapeHelper,StyleDemo,TextDemo
./DevelopersGuide/Extensions/DialogWithHelp/Makefile
./DevelopersGuide/Config/Makefile  #ConfigExamples
./DevelopersGuide/GUI/Makefile  #DialogDocument,MessageBox,UnoDialogSample,UnoDialogSample2,UnoMenu,UnoMenu2,ImageControlSample2
./DevelopersGuide/ScriptingFramework/ScriptSelector/Makefile  #ScriptSelector
./DevelopersGuide/ScriptingFramework/SayHello/Makefile  #SayHello
./DevelopersGuide/Database/Makefile  #CodeSamples,OpenQuery,RowSet,RowSetEventListener,Sales,SalesMan,sdbcx
./DevelopersGuide/Database/DriverSkeleton/Makefile  #OSubComponent.hxx,OTypeInfo.hxx,SConnection.hxx,SConnection.cxx,SDatabaseMetaData.hxx,SDatabaseMetaData.cxx,SDriver.hxx,SDriver.cxx,SPreparedStatement.hxx,SPreparedStatement.cxx,SResultSet.hxx,SResultSet.cxx,SResultSetMetaData.hxx,SResultSetMetaData.cxx,SServices.cxx,SStatement.hxx,SStatement.cxx,propertyids.hxx,propertyids.cxx
./DevelopersGuide/OfficeBean/Makefile  #OOoBeanViewer
./DevelopersGuide/BasicAndDialogs/CreatingDialogs/Makefile  #SampleDialog
./DevelopersGuide/BasicAndDialogs/ToolkitControls/Makefile  #ToolkitControls
./DevelopersGuide/Charts/Makefile  #CalcHelper,ChartHelper,ChartInCalc,ChartInDraw,ChartInWriter,Helper,JavaSampleChartAddIn,ListenAtCalcRangeInDraw,SelectionChangeListener
./DevelopersGuide/Forms/Makefile  #BooleanValidator,ButtonOperator,ComponentTreeTraversal,ControlLock, ControlValidation,ControlValidator, DataAwareness,DateValidator,DocumentBasedExample,DocumentHelper,DocumentType,DocumentViewHelper,FLTools,FormLayer,GridFieldValidator,InteractionRequest,KeyGenerator,ListSelectionValidator,NumericValidator,SingleControlValidation,SpreadsheetDocument,SpreadsheetValueBinding,SpreadsheetView,TableCellTextBinding,TextValidator,TimeValidator,UNO,ValueBinding,WaitForInput
./DevelopersGuide/ProfUNO/CppBinding/Makefile  #office_connect.cxx,string_samples.cxx
./DevelopersGuide/ProfUNO/SimpleBootstrap_cpp/Makefile  #SimpleBootstrap_cpp.cxx
./DevelopersGuide/ProfUNO/SimpleBootstrap_java/Makefile  #SimpleBootstrap_java.java,manifest.mf
./DevelopersGuide/ProfUNO/Lifetime/Makefile  #MyUnoObject,object_lifetime.cxx 
./DevelopersGuide/ProfUNO/InterprocessConn/Makefile  #ConnectionAwareClient,UrlResolver
./java/Spreadsheet/Makefile  #CalcAddins,ChartTypeChange,EuroAdaption,SCalc
./java/Text/Makefile  #BookmarkInsertion,HardFormatting,SWriter,StyleCreation,StyleInitialization,TextDocumentStructure,TextReplace,GraphicsInserter,WriterSelector
./java/MinimalComponent/Makefile  #MinimalComponent
./java/EmbedDocument/EmbeddedObject/Makefile  #EmbeddedObject
./java/Drawing/Makefile  #SDraw
./java/PropertySet/Makefile  #PropTest
./java/DocumentHandling/Makefile  #DocumentConverter,DocumentLoader,DocumentPrinter,DocumentSaver
./java/ToDo/Makefile  #ToDo
./java/Inspector/Makefile  #Object Inspector

すべての例のMakefileを一括でmakeするシェルスクリプトmake_all.sh


Geanyのビルドコマンドでsetsdkenv_unixを実行したシェルでmakeできるコマンドを設定しようとしましたが、どうもうまくいかないのでもうすべてのMakefileを一括してmakeするシェルスクリプトを作りました。
#!/bin/bash
#第一引数をmakeの引数にしている。
#setsdkenv_unixが実行されたシェルで実行されているのかをチェック。
if [ -z "${OO_SDK_HOME}" ]
then
    echo SDKフォルダにあるsetsdkenv_unixが実行されたTerminalで実行してください。
    exit
fi
OUTPUT_DIR=${OO_SDK_OUT}  #出力先フォルダ
EXP_DIR=${OO_SDK_HOME}/examples #SDKの例のフォルダ
cd ${EXP_DIR}  #SDKの例のフォルダに移動。
LOG_DIR=${OUTPUT_DIR}/log/$(date +%Y%m%d_%H%M%S)  #ログファイル出力先フォルダフルパスを作成。
mkdir -p ${LOG_DIR}  #ログファイル出力先フォルダを作成。
while read LINE
do
 CUR_DIR=${LINE%/Makefile*}  #Makefileのあるフォルダ。
 LOG_FILE=${CUR_DIR#./}  #ログファイル名の作成。
 LOG_FILE=${LOG_FILE//"/"/"_"}  #パス区切りを_に置換。dashではエラーになる。
 cd $CUR_DIR  #Makefileのあるフォルダに移動。
 make $1 2>&1 | tee ${LOG_DIR}/${LOG_FILE}.log
 cd ${EXP_DIR}  #SDKの例のフォルダに戻る。
done << EOS
./cpp/complextoolbarcontrols/Makefile  #complextoolbarcontrols
./cpp/remoteclient/Makefile  #Remote client
./cpp/counter/Makefile  #Counter
./cpp/DocumentLoader/Makefile  #DocumentLoader
./python/toolpanel/Makefile  #ToolPanelPoc
./DevelopersGuide/UCB/Makefile  #ChildrenRetriever,DataStreamComposer,DataStreamRetriever,Helper,MyActiveDataSink,PropertiesComposer,PropertiesRetriever,ResourceCreator,ResourceManager,ResourceRemover
./DevelopersGuide/FirstSteps/Makefile  #FirstUnoContact,FirstLoadComponent,HelloTextTableShape
./DevelopersGuide/Spreadsheet/Makefile  #ExampleAddIn,ExampleDataPilotSource,GeneralTableSample,SpreadsheetDocHelper,SpreadsheetSample,ViewSample
./DevelopersGuide/Text/Makefile  #TextDocuments
./DevelopersGuide/OfficeDev/DesktopEnvironment/Makefile  #CustomizeView,Desk,DocumentView,FunctionHelper,IOnewayLink,IShutdownListener,Interceptor,JavaWindowPeerFake,NativeView,OfficeConnect,OnewayExecutor,StatusListener,StatusView,ViewContainer
./DevelopersGuide/OfficeDev/PathSettings/Makefile  #PathsettingsTest
./DevelopersGuide/OfficeDev/Linguistic/Makefile  #LinguisticExamples,OneInstanceFactory,PropChgHelper,PropChgHelper_Hyph,PropChgHelper_Spell,SampleHyphenator,SampleSpellChecker,SampleThesaurus,XHyphenatedWord_impl,XMeaning_impl,XPossibleHyphens_impl,XSpellAlternatives_impl
./DevelopersGuide/OfficeDev/Makefile  #OfficeConnect,ContextMenuInterceptor,MenuElement,Number_Formats
./DevelopersGuide/OfficeDev/PathSubstitution/Makefile  #PathSubstitutionTest
./DevelopersGuide/OfficeDev/DisableCommands/Makefile  #DisableCommandsTest
./DevelopersGuide/OfficeDev/Clipboard/Makefile  #Clipboard,ClipboardListener,ClipboardOwner,TextTransferable
./DevelopersGuide/OfficeDev/FilterDevelopment/AsciiFilter/Makefile  #AsciiReplaceFilter,FilterOptions,TypeDetection.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_java/Makefile  #FlatXml,FlatXmlFilter_java.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilterDetection/Makefile  #filterdetect.cxx,filterdetect.hxx,fdcomp.cxx,FlatXmlTypeDetection.xcu
./DevelopersGuide/OfficeDev/FilterDevelopment/FlatXmlFilter_cpp/Makefile  #FlatXml.cxx,FlatXmlFilter_cpp.xcu
./DevelopersGuide/OfficeDev/TerminationTest/Makefile  #TerminationTest,TerminateListener
./DevelopersGuide/Components/SimpleLicense/Makefile  #description.xml
./DevelopersGuide/Components/Addons/JobsAddon/Makefile  #AsyncJob,Jobs.xcu,Addons.xcu
./DevelopersGuide/Components/Addons/ProtocolHandlerAddon_cpp/Makefile  #addon.cxx,addon.hxx,component.cxx,ProtocolHandler.xcu,Addons.xcu
./DevelopersGuide/Components/Addons/ProtocolHandlerAddon_java/Makefile  #ProtocolHandlerAddon,ProtocolHandler.xcu,Addons.xcu
./DevelopersGuide/Components/CppComponent/Makefile  #TestCppComponent.cxx,service1_impl.cxx,service2_impl.cxx
./DevelopersGuide/Components/JavaComponent/Makefile  #TestJavaComponent,TestComponentA,TestComponentB,TestServiceProvider
./DevelopersGuide/Components/Thumbs/Makefile  #ImageShrink,Thumbs
./DevelopersGuide/Components/dialogcomponent/Makefile  #DialogComponent.java,XTestDialogHandler.idl,TestDialogHandler.idl,DialogComponent.odt
./DevelopersGuide/Drawing/Makefile  #ChangeOrderDemo,ControlAndSelectDemo,CustomShowDemo,DrawViewDemo,DrawingDemo, FillAndLineStyleDemo,GluePointDemo,GraphicExportDemo,Helper,LayerDemo,ObjectTransformationDemo,Organigram,PageHelper,PresentationDemo,ShapeHelper,StyleDemo,TextDemo
./DevelopersGuide/Extensions/DialogWithHelp/Makefile
./DevelopersGuide/Config/Makefile  #ConfigExamples
./DevelopersGuide/GUI/Makefile  #DialogDocument,MessageBox,UnoDialogSample,UnoDialogSample2,UnoMenu,UnoMenu2,ImageControlSample2
./DevelopersGuide/ScriptingFramework/ScriptSelector/Makefile  #ScriptSelector
./DevelopersGuide/ScriptingFramework/SayHello/Makefile  #SayHello
./DevelopersGuide/Database/Makefile  #CodeSamples,OpenQuery,RowSet,RowSetEventListener,Sales,SalesMan,sdbcx
./DevelopersGuide/Database/DriverSkeleton/Makefile  #OSubComponent.hxx,OTypeInfo.hxx,SConnection.hxx,SConnection.cxx,SDatabaseMetaData.hxx,SDatabaseMetaData.cxx,SDriver.hxx,SDriver.cxx,SPreparedStatement.hxx,SPreparedStatement.cxx,SResultSet.hxx,SResultSet.cxx,SResultSetMetaData.hxx,SResultSetMetaData.cxx,SServices.cxx,SStatement.hxx,SStatement.cxx,propertyids.hxx,propertyids.cxx
./DevelopersGuide/OfficeBean/Makefile  #OOoBeanViewer
./DevelopersGuide/BasicAndDialogs/CreatingDialogs/Makefile  #SampleDialog
./DevelopersGuide/BasicAndDialogs/ToolkitControls/Makefile  #ToolkitControls
./DevelopersGuide/Charts/Makefile  #CalcHelper,ChartHelper,ChartInCalc,ChartInDraw,ChartInWriter,Helper,JavaSampleChartAddIn,ListenAtCalcRangeInDraw,SelectionChangeListener
./DevelopersGuide/Forms/Makefile  #BooleanValidator,ButtonOperator,ComponentTreeTraversal,ControlLock, ControlValidation,ControlValidator, DataAwareness,DateValidator,DocumentBasedExample,DocumentHelper,DocumentType,DocumentViewHelper,FLTools,FormLayer,GridFieldValidator,InteractionRequest,KeyGenerator,ListSelectionValidator,NumericValidator,SingleControlValidation,SpreadsheetDocument,SpreadsheetValueBinding,SpreadsheetView,TableCellTextBinding,TextValidator,TimeValidator,UNO,ValueBinding,WaitForInput
./DevelopersGuide/ProfUNO/CppBinding/Makefile  #office_connect.cxx,string_samples.cxx
./DevelopersGuide/ProfUNO/SimpleBootstrap_cpp/Makefile  #SimpleBootstrap_cpp.cxx
./DevelopersGuide/ProfUNO/SimpleBootstrap_java/Makefile  #SimpleBootstrap_java.java,manifest.mf
./DevelopersGuide/ProfUNO/Lifetime/Makefile  #MyUnoObject,object_lifetime.cxx
./DevelopersGuide/ProfUNO/InterprocessConn/Makefile  #ConnectionAwareClient,UrlResolver
./java/Spreadsheet/Makefile  #CalcAddins,ChartTypeChange,EuroAdaption,SCalc
./java/Text/Makefile  #BookmarkInsertion,HardFormatting,SWriter,StyleCreation,StyleInitialization,TextDocumentStructure,TextReplace,GraphicsInserter,WriterSelector
./java/MinimalComponent/Makefile  #MinimalComponent
./java/EmbedDocument/EmbeddedObject/Makefile  #EmbeddedObject
./java/Drawing/Makefile  #SDraw
./java/PropertySet/Makefile  #PropTest
./java/DocumentHandling/Makefile  #DocumentConverter,DocumentLoader,DocumentPrinter,DocumentSaver
./java/ToDo/Makefile  #ToDo
./java/Inspector/Makefile  #Object Inspector
EOS

#./OLE/activex/Makefile  #ActiveX Control
#./CLI/CSharp/Spreadsheet/Makefile  #Spreadsheet Example
#./CLI/VB.NET/WriterDemo/Makefile  #WriterDemo
make_all.sh に修正版をアップロードしました。

これをmake_all.shというファイル名で~/libreoffice5.0_sdkに保存します。

Auto deployment = YES、にしていると./DevelopersGuide/Components/SimpleLicense/Makefileで
「入力が正しくありません。"yes" または "no" を入力してください:」と質問されて終わらなくなるのでNOに修正しておかないといけません。

~/libreoffice5.0_sdk/pq-VirtualBox(マシン名)のsetsdkenv_unix.shの67行目をNOにしておきます。
# Environment variable to enable auto deployment of example components
# Example: SDK_AUTO_DEPLOYMENT=YES
SDK_AUTO_DEPLOYMENT=NO
export SDK_AUTO_DEPLOYMENT
noにしていてもなぜかSampleDialog.oxtはデプロイされます。

あとはTerminalでまず/opt/libreofficedev5.0/sdk/setsdkenv_unixを実行します。

linuxBean14.04(83)LibreOfiice5.0.2のインストールで作ったsetsdkenvのランチャを使うといちいち/opt/libreofficedev5.0/sdk/setsdkenv_unixを入力しなくても済みます。

javacにデバッグ情報をclassファイルに含めるには/opt/libreoffice5.0/sdk/settings/settings.mkを編集してDEBUG=yesとする必要があります。

bash ~/libreoffice5.0_sdk/make_all.sh

あとはこれでビルドが始まります。

~/libreoffice5.0_sdk/logフォルダのなかにできる実行した日時名のフォルダ内に各Makefileの出力ログが保存されます。

make_all.shをcleanを引数にして実行するとビルドされたファイルが削除されます。

linuxBean14.04(29)LibreOfficeDev5.0SDKの例を一括でmakeする - p--qに出力ログを置いておきました。(ここにあるmake_all.shは更新をやめた古いものです。WindowsでログをみるときはGeanyで開くとUTF-8と改行コードをうまく処理してくれました。)

CLI_CSharp_Spreadsheet.log
CLI_VB.NET_WriterDemo.log
OLE_activex.log
この3つはWindowsでしか動かないというメッセージになっています。

他にエラーを吐いているログが3つありました。

DevelopersGuide_OfficeDev_DesktopEnvironment.log

nativeview.cのコンパイルに失敗しています。

どうしてもコンパイルできなくて、結局コンパイル済のものをネットでダウンロードしてきて解決しました。(linuxBean14.04(33)失敗したLibreOfficeSDKの例を再make:その1参照。)

DevelopersGuide_OfficeBean.log

非推奨APIを使用しているというエラーですが、エラーがでていてもコンパイルはできていました。
(linuxBean14.04(36)失敗したLibreOfficeSDKの例を再make:その3参照。)

DevelopersGuide_Forms.log

非推奨APIの使用とジェネリクス非対応へのエラーがでていますが、これも修正の必要はなくコンパイル成功していました。(linuxBean14.04(37)失敗したLibreOfficeSDKの例を再make:その4参照。)

参考にしたサイト


Linux - Makefileのログを取る - Qiita
teeコマンドを使うと画面に出力しながらファイルにも出力できました。

配列を使用する - UNIX & Linux コマンド・シェルスクリプト リファレンス
シェルスクリプトでの配列の使い方。改行区切りのデータを配列で処理しようと思ったのですがうまくいかず。

bash 配列まとめ - Qiita
bashの配列の使い方が簡潔に解説されています。

bashのヒアドキュメントを活用する - Qiita
改行で区切られたデータをヒアドキュメントで変数に取り込むことを考えました。

bash,dash,zshのreadコマンドと「while read line」のような行ごとの読み込み処理について - 試験運用中なLinux備忘録
改行で区切られたデータをヒアドキュメントでwhile read lineを使うとうまくループで処理できました。

パラメータの展開
${parameter/pattern/string}はdashではエラーになりました。

if 文と test コマンド - UNIX & Linux コマンド・シェルスクリプト リファレンス
testコマンドはいろいろ簡潔に条件設定できて便利ですね。

日時をファイル名に付けるには
$(date +%Y%m%d_%H%M%S)で「年月日_時分秒」を得られました。

次の関連記事:linuxBean14.04(30)GNU Make Debugger, Remake:その1

PR

0 件のコメント:

コメントを投稿