セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-11-14 現在

ビルド定義 Makefile

Makefileによるビルド定義

    Makefileはbuild/Makefileに格納されています。makeコマンドを実行することで、アクトをビルドするようにあらかじめ定義されています。

    makeのパラメータ

    TWELITE=

    ビルド対象をBLUEまたはREDで指定します。TWELITE BLUEならmake TWELITE=BLUEと指定します。

    all

    ビルドを実行します。通常は省略してmake TWELITE=BLUEのように実行します。

    clean

    ビルドの中間ファイルを削除します。make TWELITE=BLUE cleanのように実行します。

    cleanall

    すべての中間ファイルを削除します。make cleanallのように実行します。buildフォルダのobjs_???フォルダをすべて削除するのと同じです。

    USE_APPDEPS=0 または 1

    1 (デフォルト) を設定すると、ファイルの依存関係をもとに、ビルドファイルを決定します。例えば、ヘッダファイルに変更があった場合に関連するソースファイルが再コンパイル対象となります。

    0 では依存関係を評価しません。0 に設定した場合、矛盾ある中間ファイルが残っていても make がエラーになりません。

    Makefile 定義

    アクトの規模に応じて、また、ビヘイビアの定義をする場合には、通常はソースファイルを分割してビルドします。

    ビルドファイルの一つはプロジェクトフォルダ名.cppです。

    他にファイルを定義する場合は、プロジェクトフォルダのbuild/Makefileを編集します。

    下記はサンプルPAL_AMB-bihaviorでのMakefileの例です。

    ##############################################################################
    # Copyright (C) 2019 Mono Wireless Inc. All Rights Reserved.
    # Released under MW-SLA-*J,*E (MONO WIRELESS SOFTWARE LICENSE
    # AGREEMENT).
    ##############################################################################
    # USER PROJECT BUILD DEFINITION.
    ##############################################################################
    
    #####################################################################
    ## set TWELITE model
    TWELITE ?= BLUE
    #TWELITE = RED
    
    #####################################################################
    ## set application version (MUST SET THIS.)
    VERSION_MAIN = 0
    VERSION_SUB  = 1
    VERSION_VAR  = 0
    
    #####################################################################
    ## set an additional source file
    ##   the default file name is dirname.
    
    ## for C++ files compiled with g++ (must have .cpp suffix)
    APPSRC_CXX += myAppBhvParent.cpp
    APPSRC_CXX += myAppBhvParent-handlers.cpp
    APPSRC_CXX += myAppBhvChild.cpp
    APPSRC_CXX += myAppBhvChild-handlers.cpp
    
    ## for C files compiled with gcc (must have .c suffix)
    #APPSRC += my_c_file.c
    
    ## Additional Src/Include Path
    # if set, find source files from given dirs.
    #
    APP_COMMON_SRC_DIR_ADD1 = ../Parent
    APP_COMMON_SRC_DIR_ADD2 = ../Child
    #APP_COMMON_SRC_DIR_ADD3 =
    #APP_COMMON_SRC_DIR_ADD4 =
    
    #####################################################################
    ## set misc option for compiler
    
    ## C++ flags passed to g++
    # e.g. CXXFLAGS += -DMY_DEFS
    #CXXFLAGS +=
    
    ## C++/C flags passed to g++/gcc
    # e.g. CFLAGS += -DMY_DEFS
    #CFLAGS +=
    
    ## include opts
    # e.g. INCFLAGS += -I../my_common_src/
    #INCFLAGS +=
    
    ## optimize flag (default is -Os, normally no need to change)
    #OPTFLAG=-O2
    
    #####################################################################
    ## must include mwx.mk (the makefile body part.)
    MWSDK_PATH?=$(realpath $(MWSDK_ROOT))
    include $(MWSDK_PATH)/MkFiles/mwx.mk
    #####################################################################
    

    VERSION_???

    バージョン番号を指定します。ビルド結果ファイル名に反映されます。

    ## set application version (MUST SET THIS.)
    VERSION_MAIN = 0
    VERSION_SUB  = 1
    VERSION_VAR  = 0
    

    コンパイル中は -DVERSION_MAIN=0 -DVERSION_SUB=1 -DVERSION_VAR=0のように定義として渡されます。

    ソースファイルの追加

    ソースファイルを追加する際に必要なのはAPPSRC_CXXAPP_COMMON_SRC_DIR_ADD?です。

    ソースファイル名をAPPSRC_CXXに追記します。このファイル名にはフォルダ名が含まれてはいけません。サブフォルダにあるものもフォルダなしで指定します(つまり同じファイル名がサブフォルダにある場合は、ビルドが失敗します)

    APPSRC_CXX += myAppBhvParent.cpp
    APPSRC_CXX += myAppBhvParent-handlers.cpp
    APPSRC_CXX += myAppBhvChild.cpp
    APPSRC_CXX += myAppBhvChild-handlers.cpp
    

    次にソースファイルがプロジェクトフォルダ以外の場所に格納されている場合の検索パスを指定します。最大4つまで設定できます。

    APP_COMMON_SRC_DIR_ADD1 = ../Parent
    APP_COMMON_SRC_DIR_ADD2 = ../Child
    

    フォルダの指定はMakefileからの相対パスになります。

    コンパイル・リンカオプション

    その他にもいくつかのオプションをコンパイラ・リンカに渡すことができます。

    指定内容
    CXXFLAGSC++ソースファイルに対してコンパイルオプションを指定します。
    CFLAGSC/C++ソースファイルに対してコンパイルオプションを指定します。
    INCFLAGSヘッダファイルのインクルードファイルを指定します。
    OPTFLAGS特別な理由があって-Os以外のコンパイルオプションを適用したい場合に定義します。
    LDFLAGSリンカオプションを指定します。(上記Makefileのコメントには記述はありませんが指定できます)