ModusToolbox v2.x の Makefile を管理する - Community Translated (JA)

Version 2

    Community Translated by  MoTa_728816          Version: **

     

    ModusToolbox™ のビルドシステムはプロジェクトを makefile に含まれている情報をもとに作成します。このドキュメントは makefile を管理してよくある作業を達成する方法について述べます。このドキュメントは質問と回答の形式をとっています。回答においては一般的なユスケスにおいて目的の作業を達成するために必要な知識と、簡抜粋例を提供します

    このドキュメントでは以下の用語を使用します

    メイクファイルディレクトリ: makefile を含むフォルダ;サンプルコ (スタアプリケショ) やあなたのプロジェクト

    プロジェクトディレクトリ: プロジェクトの生成プロセス中に作成されるフォルダ; makefile のコピ及び、プロジェクトの全てのファイルを含みます

    .lib ファイル: GitHub レポジトリの URL 及び特定のコミット用のタグ(tag)SHA を含むテキストファイ

    自動:ビルドシステムが自動的にファイルを見つけ出すために使用するプロセ

    ModusToolbox のビルドシステムを使用してプロジェクトを作成すると、プロジェクトに必要な全てのファイルはプロジェクトディレクトリの中にコピされます。その中にはサンプルコ (スタアプリケション) のオリジナルの makefile も含まれます

     

    1. makefile とは何ですか、そしてどのように使うのですか

    makefile にはプロジェクトを作成してビルドする方法が記述されています。どのファイルを使用するか、どのライブラリをインクルドするか、どのビルドツルを使用するか、等の情報が含まれています。この makefile ModusToolbox のビルドシステム用のものです。コマンドラインインタフェスの一般的は背景や連情報についてRunning ModusToolbox from the Command Line をご照ください

     

    Cypress スタアプリケショとも考えていただける、多サンプルコ GitHub で提供しています。それそれがそのアプリケション用の makefile とソスファイルを含んでいます。サンプルコドは自己完結型ではありません。ModusToolbox IDE New Application ウィザドや Project Creator ルを使用すると、ビルドシステムが起動され、プロジェクトに必要とされる全てのファイルがプロジェクトディレクトリに現れます。ModusToolbox IDE を使用している場合、このフォルダはあなたの Eclipse クスペスにあります。Project Creator を使用している場合、プロジェクトディレクトリはあなたが指定した場所になります。その後、ご希望のファイルを追加したり、コマンドラインから作業したりすることが可能です

     

    makefile はプロジェクトの生成とビルドプロセスをコントロルします。プロジェクトディレクトリの makefile はサンプルコドのオリジナル makefile の複製です

     

    2. サンプルコドに含まれる makefile とプロジェクトディレクトリに含まれる makefile のどちらを編集すべきですか

    通常、プロジェクトはサンプルコドから作成されます、そのあなたのプロジェクトディレクトリになる makefile を編集してください。この更はあなたのプロジェクトだけで有になります

     

    しかし、GitHub からサンプルコドをロカルコピとしてダウンロドすることも可能です。もしあなたのロカルコピのサンプルコ makefile を編集した場合、そのサンプルを元に作成したすべてのプロジェクトにその更が反映されます

     

    他の質問と回答では、このドキュメントではメイクファイルディレクトリを指します。サンプルコドのオリジナルの makefile はプロジェクトディレクトリに複製されます

     

    3. 自動索が見つけられるようにプロジェクトにファイルを追加するにはどうすれば良いでしょうか

    ビルドシステムは自動的にメイクファイルディレクトリにある全てのソスファイルを見つけます。これには .c, .cpp, .h, .S, .s, .o 及び .a ファイルが含まれます

     

    結果として、簡な方法はそのファイルをメイクファイルディレクトリに追加することです。索は再的に行われますので、メイクファイルディレクトリツリー内のどこにでもファイルを追加することが可能です、そして make ビルドコマンドはその追加されたファイルを見つけます

     

    しかし、一般的なユスケスで追加したいファイルがメイクファイルディレクトリ外にある場合;例えば社のサに置かれているソスのコレクション等

     

    ビルドシステムで索されない場所にあるソスやヘッダを手動で追加する場合には SOURCES INCLUDES 変数をご使用ください

     

    SOURCES 容はスペスで切られた個のファイル名となります。ファイルの場所を指定するパスは絶パスでもメイクファイルディレクトリからの相パスでも可能です。複のファイルを索するためにワイルドカドを含む索パタンも作成できます

     

    SOURCES=$(wildcard ../MySource1/*.c) $(wildcard ../MySource2/*.c)

     

    ヘッダファイルを含むフォルダを指定するのには INCLUDES 変数をお使いください。容はスペスで切られたそれぞれのディレクトリへの相パスとなります

     

    INCLUDES=../MySource1 ../MySource2

     

    特定のファイルやフォルダを無視するように設定することも可能です。7. どうすれば自動索に特定のファイルを無視させるようにできますか? を照してください

     

    4.スペ(空白)を含むパスを指定するのにはどうしたら良いですか

    多くのビルドツルにとってパスに含まれたスペスは問題の原因になりますので、可能な限りそのようパスの使用は避けてください。もしスペスを含むパスの使用が不可避の場合には、スペスを含むパスを適切に回避するために $(wildcard ) 機能を使用してください

     

    INCLUDES=$(wildcard ../My Source/)

     

    CY_COMPILER_PATH=$(wildcard C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.3/arm/bin)

     

    5. 変数が値として相パスを要求する場合に絶パスを使用するのにはどうしたら良いですか

    追加したいファイルが社のサやロカルマシンの特定の場所にあるかも知れません。絶パスは容易に対応することが可能です。この場合、make 変数で絶パスに設定されたものを作成して、「相」パスの一部として使用することが可能です

     

    ABS_PATH=C:/<path_to_source>/ExternalSourceFiles/

    SOURCES=$(ABS_PATH)/external_source.c

     

    6.ビルドシステムではスラッシュはどのように扱うのでしょうか

    Windows上の ModusToolbox Cygwin make 部で使用しています。Cygwin POSIX互換の環境です。POSIX のパスはスラッシュ ( / ) をセパレタとして使用します。そのmakefile でパスを指定する場合にはスラッシュ( / )を使用しなくてはなりません

     

    Windowsのパス名はセパレタにバックスラッシュ ( \ ) を使用しています。長い絶パスが使用される場合、バックスラッシュ ( \ ) を スラッシュ ( / ) に置き換える必要があります、この換を容易にするために $(subst ) 機能が使用できます

     

    WIN_PATH=C:\Users\<some_long_path>\HeaderFiles

    HEADER_FILE=$(subst \,/,$(WIN_PATH))

    INCLUDES=$(HEADER_FILE)

     

    7. どうすれば自動索に特定のファイルを無視させるようにできますか

    例えば、テストやベリフィケションに使用されるファイルを含んだサブフォルダがあり、アプリケションの行形にそれらを含んでコンパイルさせたくない場合

    CY_IGNORE 変数を使用してください。変数の値はスペ(空白)切られた自動索に無視させたいフォルダおよびファイルのリストです。メイクファイルディレクトリからの相パスを使用してください。複のファイルを無視させるためにワイルドカドを含むパタンを作成することが可能です

     

    CY_IGNORE=./filename.c ./TestFolder

    CY_IGNORE+=$(wildcard ./lib/lib1/tests/*.c)

     

    8. テキストファイル .lib を使用して外部のライブラリを追加するのにはどうしたら良いですか

    ModusToolbox のビルドシステムは git ジョンコントロルシステムを使用します。通常 .lib ファイルは git レポジトリへの URL とレポジトリ中の特定のコミットを示すテキスト一行のファイルです。Cypress から提供されている .lib ファイルは通常 GitHub 上の、公開されている Cypressが所有するレポジトリを指しています。例えば、この .lib ファイルは ペリフェラルドライバライブラリ (PDL) の最新版をプロジェクトにインポトします

     

    https://github.com/cypresssemiconductorco/psoc6pdl/#latest-v1.X

     

    ご自分のライブラリを追加するのには、gitリポジトリを指す .lib ファイルを作成してください。その .lib ファイルをメイクファイルディレクトリに置いてください。例えば

    https://gitrepos.company.com/mylibrary/#52fac15a7c06ecac951bc67fff94097e9f671efb

     

    make gitlibs コマンドは全ての .lib ファイルを見つけて理し git コマンドを使用して適切なコドを複製もしくはプルします。そして、その .lib ファイルにリストされている特定のハッシュやタグをチェックします。ソスファイルはプロジェクトフォルダのルトにある libs フォルダの中にコピされます。ModusToolbox new project フロ Library Manager は自動的に make gitlib 行します

     

    9. 外部のライブラリをファイルやファイルパスを指定して追加するのにはどうしたら良いですか

    3. 自動索が見つけられるようにプロジェクトにファイルを追加するにはどうすれば良いでしょうか?を照してください

     

    10. 自分のプロジェクトにプリコンパイルされたバイナリを追加するのにはどうしたら良いですか

    ビルドシステムは自動的にメイクファイルディレクトリにある .o .a ファイルを見つけ出します。簡な方法は追加したいファイルをメイクファイルディレクトリに置くことです

    しかし、一般的なユスケスではバイナリファイルはメイクファイルディレクトリの外にあることが普通です。アプリケションのプリコンパイルドバイナリを指定するのには LDLIBS 変数を使用してください。LDLIBS の値はスペスで切られた該ファイルのリストです。ファイルの位置を指定するのにはメイクファイルディレクトリからの相パスを使用してください。複ファイルの索用にワイルドカドを使ったサチパタを作成することも可能です。これらのファイルはリンクプロセス時に統合されます

     

    LDLIBS=../MyBinaryFolder/binary.o

    LDLIBS+=$(wildcard ../lib/*.a)

     

    もし、そのバイナリファイル用のヘッダファイルをインクルドする必要がある場合には、INCLUDES 変数を使用してください3. 自動索が見つけられるようにプロジェクトにファイルを追加するにはどうすれば良いでしょうか?を照してください

     

    11. ビルドツルはどのように指定したら良いですか

    makefile はデフォルトでは ModusToolbox 2.0 のパッケジに含まれている GCC Arm® 7.2.1 を使用します。makefile 部では、変数 TOOLCHAIN CY_COMPILER_PATH の組み合わせがお使いになりたいビルドツルを指定するのに使用されます

    他のサポトされているツルチェンには ARM コンパイラと IAR コンパイラがあります、これらは別途インストルする必要があります

     

    TOOLCHAIN 変数で設定できるオプションには

    TOOLCHAIN=GCC_ARM (ModusToolbox IDE に含まれている GCC 7.2.1 を使用します)

    TOOLCHAIN=ARM (ARM コンパイラを使用します)

    TOOLCHAIN=IAR (IAR  コンパイラを使用します)

     

    されたコンパイラによって、CY_COMPILER_PATH変数にコンパイラのバイナリディレクトリの絶パスを指定してください

    CY_COMPILER_PATH=$(wildcard C:/Program Files (x86)/IAR Systems/Embedded Workbench 7.3/arm/bin)

    CY_COMPILER_PATH=$(wildcard C:/Keil/ARM/ARMCC/bin)

     

    12. ビルドシステムにカスタムビルドツルの場所を指定するのにはどうしたら良いです

    ModusToolbox が直接サポトしていないツルチェンを使用する場合には次に手順にってください

         1. プロジェクトディレクトの以下のディレクトリに移動してくださ

          libs\psoc6make\make\toolchains\

          注意:これらのファイルはオリジナルのサンプルコドフォルダには含まれていません

            これらはビルドシステムがプロジェクトを作成するときにプロジェクトに追加されます

         2. <NEW_TOOLCHAIN>.mk というファイルを新規に作成してツルチェンの設定を追加します

         3. BSPディレクトリ TARGET_<BSP>\linker\ へ移動して、TOOLCHAIN_<NEW_TOOLCHAIN> というディレクトリを作成します。そのディレクトリに該ツルチェン用のlinker scriptを追加します。接頭の「TOOLCHAIN_」が重要なことに注意してください

         4. BSPディレクトリ TARGET_<BSP>\startup\ へ移動して、そのディレクトリにルチェン用の startup ファイルを追加します

    5. 11. ビルドツルはどのように指定したら良いですか? に記載されている手順を行ってください

         6. アプリケションをビルドしてください

    ModusToolbox BSPにはサポトされているツルチェン用の startup linker ファイルが含まれています。もしお使いになるツルチェンが異なるファイルを必要とする場合には、別途ご用意していただく必要があります

     

    13. コンパイラのフラグはどのように指定したら良いでしょうか

    CFLAGS CXXFLAGS 変数 C C++ それぞれにコンパイラフラグを追加するのに使用してください。有なオプションについては該ツルチェンのドキュメントを照してください

     

    例:GNU ARM ルチェンのコンパイラ用のさまざまなオプション ここ照いただけます。オプションは下記のように設定できます

    CFLAGS=-Wall -O2

    CXXFLAGS=finline-functions

    変数の値はスペスで切られたコンパイラがサポトしているフラグのリストです

     

    更が有であることを確認するのには、makefile 変数 VERBOSE の値を'1'に設定してください。これでビルドを行時に全コマンドラインが表示されます

    コンパイラフラグが正確にどこで現れるかはお使いのツルチェンや IED に依存します。また makefile ではなく IDE を使用して VERBOSE オプションを設定することも可能です。例えば、1のように ModusToolbox IDE では、project properties を開いて、C/C++ Build のパネルをアクセスします。ここで Build command 項目 VERBOSE=1 を設定することが出ます

     

    1. Build Command

    更を保存するために Apply and Close をクリックして、アプリケションをビルドしてください。IDE で行われた更は makefile に反映されないことにご注意ください

    に、コマンドラインを使用している場合、「 make build VERBOSE=1 」と指定することで、ビルド時の全コマンドラインを表示させることが可能です

     

    14. カスタムビルドコンフィグレションはどのようにしたら作成できますか

    ModusToolboxは、デフォルトはツルチェのデバッグ(Debug)とリリ(Release)のビルドコンフィグレションを提供しています。それらは lib\psoc6make\make\toolchains の該する <TOOLCHAIN>.mk で定義されています。自のビルドコンフィグレションを作成したい場合には、CONFIG 変数に値を設定してください。例

     

    CONFIG=MyBuild

     

    また、ビルドシステムは CONFIG 変数をプロジェクトフォルダ build\<BSP>\ に生成する出力ディレクトリ名に使用します

    この変数の値を空(null)にしてはいけません

     

    15. リンカフラグはどのように指定したら良いですか

    リンカフラグを自に追加する場合には LDFLAGS を使用してください。有なオプションについては該ツルチェンのドキュメントを照してください

    例:GNU ARM ルチェンのさまざまなオプションここ照いただけます

     

    LDFLAGS=-nodefaultlibs

     

    値はスペスで切られている必要があります

     

    16. 自のリンカスクリプトを使用するにのにはどのようにしたら良いですか

    ビルドシステムは自動的にデフォルトのリンカスクリプトを使用します

    デフォルトのリンカスクリプトはボドサポトパッケ(BSP) にサポ象のツルチェ (Arm, GCC, IAR) 用のものは含まれています

    自のリンカスクリプトを使用するためには、LINKER_SCRIPT 変数の値に該ファイルを指定してください。値は makefile からリンカスクリプトへの相パスにしてください

     

    LINKER_SCRIPT=../../MyFiles/myLinkerScript.ld

     

    スクリプトはご使用のツルチェンと互換性がなくてはいけません。(.sct, .ld, .icf)

     

    17. プリ-ビルドタスクはどのように指定したら良いですか

    プリ-ビルドコマンドの指定は PREBUILD  変数を使用します。各コマンドはセミコロン ( ; ) を使用して分けてください。ファイルの場所指定はメイクファイルディレクトリからの相パスで指定してください

     

    PREBUILD=../prebuild1.bat; python prebuild2.py

     

    18. ポスト-ビルドタスクはどのように指定したら良いですか

    プリ-ビルドコマンドの指定は PREBUILD  変数を使用します。各コマンドはセミコロン ( ; ) を使用して分けてください。ファイルの場所指定はメイクファイルディレクトリからの相パスで指定してください

     

    POSTBUILD=$(CY_COMPILER_PATH)/bin/arm-none-eabi-objcopy.exe -O ihex $(CY_CONFIG_DIR)/$(APPNAME).elf $(CY_CONFIG_DIR)/$(APPNAME).hex; python sample.py

     

    19. スタティックライブラリをビルドするのにはどのようにしたら良いですか

    ビルドシステムは行形かライブラリの作成をサポトしています。もしプロジェクトが行形をビルドする場合には、APPNAME 変数がセットされ、LIBNAME 変数が空(Empty)になります

    ライブラリをビルドするには、APPNAME 変数が空(Empty) で、LIBNAME 変数にライブラリ名が設定されていることを確認してください

     

    20. コンポネント (COMPONENT) とは何ですか

    コンポネントはファイルのコレクションを含むフォルダです。通常コンポネントはアプリケションの何らかの特長や機能を装する複のファイルで構成されています。例えば、Cypress BSPでは、ハドウェアの設計が BSP_DESIGN_MODUS という名のコンポネントに含まれています。それには design.modus ファイルと場合によって BSP 連するハドウェアの設定ファイルが含まれます

     

    コンポネントは追加したり無にしたりすることが可能です

     

    21. 自のコンポネントを作成してアプリケションに追加するのにはどうしたら良いですか

    COMPONENT_<NAME>」という名のフォルダを作成してください。自動索が見つけられる場所であればどこにでも作成することが可能です。そのコンポネント用のファイルをそのフォルダに置いてください。フォルダ名の接頭は「COMPONENT_」である必要があることに注意してください

     

    その後、該コンポネントをアプリケション追加するのに

      COMPONENTS+=<NAME>

    を使用してください。フォルダ名の接頭語が使われていないことに注意してください。例えば、COMPONENT_MY_COMPONENT

     

    というフォルダを作成した場合、アプリケションに該コンポネントを追加するのには makefile で下記のように記述してください

     

    COMPONENTS+=MY_COMPONENT

     

    22. コンポネントを無にするのにはどうしたら良いですか

    DISABLE_COMPONENTS+=<NAME> を使用してコンポネントを無にしてください

    例えば

     

    DISABLE_COMPONENTS+=MY_COMPONENT

     

    23. BSPのデフォルトの design.modus ファイルを無にするのにはどうしたらよいですか

    プロジェクトに自のハドウェアコンフィグレションを適用したくなるかも知れません

    1. design.modus ファイルはデフォルトの BSP_DESIGN_MODUS コンポネントの一部です。これを行うためには、デフォルトのコンポネントを無にして、新しい自のコンポネントを追加します

     

    この作業の詳細はいくつかの BSP BSP User Guide に含まれています。これが です。Overriding the BSP design.modus File という章を見つけてください

    ModusToolbox IDE Project Creator ルを使用してプロジェクトを作成すると、このファイルのロカルコピが得られます。このファイルを直接更することも可能です;無にする必要はありません。しかし、makefile を使用して新しいアプリケションを再構築した場合、更は新しいアプリケションに反映されません。もし BSP のヴァジョンを更新した場合、ウォニングを無視すると先に施した更は失われてしまうかも知れません。この危性を回避するために、BSPのデフォルトコンポネントを無にすることが可能です

     

    このためには、自のコンポネントを作成してください。例えば、デフォルトのコンポネントを複製して名更してから、そのコンポネントに意する更を施すことが可能です。BSP ドキュメントに正確な詳細が記載されています

     

    その後、makefile で、デフォルトを無にして、自の代替を使用するようにコドを記述します。例えば、「CUSTOM_DESIGN_MODUS」という名のコンポネントを設計した場合、アプリケション用の makefile には下記容が含まれます

     

    # Disable default component

    DISABLE_COMPONENTS+=BSP_DESIGN_MODUS

    # Add my custom component

    COMPONENTS+=CUSTOM_DESIGN_MODUS

     

    24. 自の BSP を作成するのにはどうしたら良いですか

    プロジェクトが Cypress のキットを使用しない場合、自の BSP が必要になります。正確には、この話題は makefile となんら係はありません。しかし、ひとたび自の BSP を手に入れた場合、自の BSP を使用するために makefile を修正しなくてはなりません

     

    コマンドラインから新規の BSP を作成することが可能です。アプリケションかプロジェクトのディレクトリから、make bsp TARGET_GEN=<BoardName> を使用してください

     

    現在の BSP を元に BSP が作成されます。現在のプロジェクトと異なるデバイスを指定したり、無線のようなデバイスを追加することも可能です。例えば

    make bsp TARGET_GEN=MyBoard DEVICE_GEN=CY8C624ABZI-D44 ADDITIONAL_DEVICES_GEN=CYW4343WKUBG

     

    その後、プロジェクトの必要にじて新しい BSP の任意のファイルを修正することが可能です。新しい BSP は指定されたデバイス用のデフォルト リンカスクリプトと startup ファイルを含みます

     

    この作業を手動で行うための詳細情報は BSP のドキュメントに含まれています。PSoC 6 MCU BSP 用であれば、各 BSP BSP User Guide に含まれています。これが です。Creating a BSP for Your Board という章を見つけてください

    Bluetooth SDK で使用されている BSP については、その情報は wiced_btsdk ReadMe ファイルの Using BSP(platforms)の章にあります。同じ情報が各デモアプリケションの ReadMe ファイルにも含まれています

     

    25. 自分のアプリケションに自の BSP を使用するのにはどうしたら良いですか

    恐らく Cypress キットではないハドウェア用にプロジェクトを作成していると思います。その基板をサポトしている自の BSP を使用します。自の BSP TARGET_<BSP_NAME> というフォルダに入っています。makefile で、TARGET 変数をその基板に合うように設定してください

     

    例えば、もし BSP の名が「MyBoard」の場合、BSP 容は TARGET_MyBoard というフォルダにあります、そして makefile は以下のようになります

     

    # Target board/hardware

    TARGET=MyBoard

     

    make getlibs 行すると、該プロジェクト TARGET_MyBoard というフォルダの中に BSP ファイルが現れます