M
M
MWX Library
検索…
ビルド定義 Makefile
Makefileはbuild/Makefileに格納されています。makeコマンドを実行することで、アクトをビルドするよう予め定義されています。
MWSDK 2020-04 では、プロジェクトディレクトリ中の .cpp ファイルを自動で検出するため、通常は Makefile の修正は不要です。
ソースファイルをサブディレクトリに格納するような場合は、編集が必要になります。
MWSDK 2019-12では、.cpp ファイルが複数ある場合は、Makefile の編集が必要です。
プロジェクトディレクトリを他の環境からコピーしたあとには、必ずbuild/objs_???ディレクトリを削除してください。他の環境での中間ファイルが残っているとmakeがエラーになります。
(MWSDK 2020-04) USE_APPDEPS=0 を付加して clean してから、改めて make コマンドを実行することでエラーを回避できます。
$ make USE_APPDEPS=0 TWELITE=BLUE clean ... $ make TWELITE=BLUE

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 に設定した場合、矛盾ある中間ファイルが残っていても makefile がエラーになりません。

Makefile 定義

アクトの規模に応じて、また、ビヘイビアの定義をする場合には、通常はソースファイルを分割してビルドします。
ビルドファイルの一つは{プロジェクトフォルダ名.cpp}です。
他にファイルを定義する場合は、プロジェクトフォルダのbuild/Makefileを編集します。
1
##############################################################################
2
# Copyright (C) 2019 Mono Wireless Inc. All Rights Reserved.
3
# Released under MW-SLA-*J,*E (MONO WIRELESS SOFTWARE LICENSE
4
# AGREEMENT).
5
##############################################################################
6
# USER PROJECT BUILD DEFINITION.
7
##############################################################################
8
9
#####################################################################
10
### set TWELITE model
11
TWELITE ?= BLUE
12
#TWELITE = RED
13
14
#####################################################################
15
### set application version (MUST SET THIS.)
16
VERSION_MAIN = 0
17
VERSION_SUB = 1
18
VERSION_VAR = 0
19
20
#####################################################################
21
### set an additional source file
22
### the default file name is dirname.
23
24
### for C++ files compiled with g++ (must have .cpp suffix)
25
APPSRC_CXX += myAppBhvParent.cpp
26
APPSRC_CXX += myAppBhvParent-handlers.cpp
27
APPSRC_CXX += myAppBhvChild.cpp
28
APPSRC_CXX += myAppBhvChild-handlers.cpp
29
30
### for C files compiled with gcc (must have .c suffix)
31
#APPSRC += my_c_file.c
32
33
### Additional Src/Include Path
34
# if set, find source files from given dirs.
35
#
36
APP_COMMON_SRC_DIR_ADD1 = ../Parent
37
APP_COMMON_SRC_DIR_ADD2 = ../Child
38
#APP_COMMON_SRC_DIR_ADD3 =
39
#APP_COMMON_SRC_DIR_ADD4 =
40
41
#####################################################################
42
### set misc option for compiler
43
44
### C++ flags passed to g++
45
# e.g. CXXFLAGS += -DMY_DEFS
46
#CXXFLAGS +=
47
48
### C++/C flags passed to g++/gcc
49
# e.g. CFLAGS += -DMY_DEFS
50
#CFLAGS +=
51
52
### include opts
53
# e.g. INCFLAGS += -I../my_common_src/
54
#INCFLAGS +=
55
56
### optimize flag (default is -Os, normally no need to change)
57
#OPTFLAG=-O2
58
59
#####################################################################
60
### must include mwx.mk (the makefile body part.)
61
MWSDK_PATH?=$(realpath $(MWSDK_ROOT))
62
include $(MWSDK_PATH)/MkFiles/mwx.mk
63
#####################################################################
Copied!
上記はサンプルPAL_AMB-bihaviorでのMakefileの例です。

VERSION_???

1
### set application version (MUST SET THIS.)
2
VERSION_MAIN = 0
3
VERSION_SUB = 1
4
VERSION_VAR = 0
Copied!
バージョン番号を指定します。ビルド結果ファイル名に反映されます。
コンパイル中は -DVERSION_MAIN=0 -DVERSION_SUB=1 -DVERSION_VAR=0のように定義として渡されます。

ソースファイルの追加

(MWSDK 2020-04) サブディレクトリにファイルを配置しない場合は、追加指定は不要になりました。プロジェクトファイルにある .c .cpp ファイルがすべて追加されます。
ソースファイルを追加する際に必要なのはAPPSRC_CXXAPP_COMMON_SRC_DIR_ADD?です。
サブディレクトリにソースファイルを配置する場合は必ずディレクトリ APP_COMMON_SRC_DIR_ADD? の指定が必要です。
ソースファイル名をAPPSRC_CXXに追記します。このファイル名にはディレクトリ名が含まれてはいけません。サブディレクトリにあるものもディレクトリなしで指定します(つまり同じファイル名がサブディレクトリにある場合は、ビルドが失敗します)
1
APPSRC_CXX += myAppBhvParent.cpp
2
APPSRC_CXX += myAppBhvParent-handlers.cpp
3
APPSRC_CXX += myAppBhvChild.cpp
4
APPSRC_CXX += myAppBhvChild-handlers.cpp
Copied!
次にソースファイルがプロジェクトディレクトリ以外の場所に格納されている場合の検索パスを指定します。最大4つまで設定できます。
1
APP_COMMON_SRC_DIR_ADD1 = ../Parent
2
APP_COMMON_SRC_DIR_ADD2 = ../Child
Copied!
ディレクトリの指定はMakefileからの相対パスになります。

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

その他にもいくつかのオプションをコンパイラ・リンカに渡すことができます。
指定
内容
CXXFLAGS
C++ソースファイルに対してコンパイルオプションを指定します。
CFLAGS
C/C++ソースファイルに対してコンパイルオプションを指定します。
INCFLAGS
ヘッダファイルのインクルードファイル指定をします。
OPTFLAGS
特別な理由があって-Os以外のコンパイルオプションを適用したい場合に定義します。
LDFLAGS
リンカオプションを指定します。(上記Makefileのコメントには記述はありませんが指定は可能です)
最終更新 1mo ago