これは、書籍 CM Kormanyos、Real-Time C++: Efficient Object-Oriented and Template Microcontroller Programming、第 4 版 (Springer、Heidelberg、2021) ISBN 9783662629956 のコンパニオン コードです。
このリポジトリにはいくつかの主要な部分があります。
ref_app
は ref_app にあります。これにはベンチマークも含まれます。GNU/GCC クロス コンパイラーとWin*
上で実行されるさまざまな追加ツール (以下で説明するように特定のビルドにオプションで必要) は、関連する ckormanyos/real-time-cpp-toolchains リポジトリにあります。
リファレンス アプリケーションは、小さなスタートアップ コードで起動し、その後、スキニー マイクロコントローラー抽象化レイヤー (MCAL) を初期化します。次に、制御は、LED アプリケーションを管理し、周期ベンチマーク タスクを呼び出し、ウォッチドッグにサービスを提供する単純なマルチタスク スケジューラに渡されます。
LED アプリケーションは、ユーザー LED を次の頻度で切り替えます。
リファレンス アプリケーションは C++14、17、20、23 以降と互換性があります。
アプリケーション ソフトウェアは一度実装され、ref_app 内のサポートされている各ターゲットで均一に使用されます。個々のターゲット間の違いは、チップ固有およびボード固有のスタートアップ/MCAL の詳細に関連する下位のソフトウェア層でのみ発生します。
このようにして、プロジェクトは高いレベルの移植性を示します。
リファレンス アプリケーションは次のターゲットをサポートします。
ターゲット名 (ビルド コマンドで使用されるもの) | ターゲットの説明 | *(ブレッドボード) |
---|---|---|
avr | MICROCHIP(R) [旧ATMEL(R)] AVR(R) ATmega328P | × |
atmega2560 | MICROCHIP(R) [旧ATMEL(R)] AVR(R) ATmega2560 | |
atmega4809 | MICROCHIP(R) [旧ATMEL(R)] AVR(R) ATmegax4809 | × |
am335x | Texas Instruments(R) AM335x ARM(R) A8 を搭載した BeagleBone | |
bcm2835_raspi_b | RaspberryPi(R) Zero と ARM1176-JZFS(TM) | |
Debug / Release | MSVC x64 コンパイラー経由のWin* 上の PC Debug / Release | |
host | Win* / mingw64 / *nix 上の PC/ワークステーション (ホスト コンパイラ経由) | |
lpc11c24 | NXP(R) OM13093 LPC11C24 ボード ARM(R) Cortex(R)-M0+ | |
nxp_imxrt1062 | Teensy 4.0 ボード / NXP(R) iMXRT1062 ARM(R) Cortex(R)-M7 | × |
riscvfe310 | SiFive RISC-V FE310 SoC | |
rl78 | ルネサス(R) RL78/G13 | |
rpi_pico_rp2040 | RaspberryPi(R) Pico RP2040 デュアル ARM(R) Cortex(R)-M0+ 搭載 | × |
rpi_pico2_rp2350 | RaspberryPi(R) Pico2 RP2350 デュアル ARM(R) Cortex(R)-M33 搭載 | × |
rx63n | ルネサス(R) RX630/RX631 | |
stm32f100 | STMicroelectronics(R) STM32F100 ARM(R) Cortex(R)-M3 | × |
stm32f407 | STMicroelectronics(R) STM32F407 ARM(R) Cortex(R)-M4F | |
stm32f429 | STMicroelectronics(R) STM32F429 ARM(R) Cortex(R)-M4F | |
stm32f446 | STMicroelectronics(R) STM32F446 ARM(R) Cortex(R)-M4F | |
stm32h7a3 | STMicroelectronics(R) STM32H7A3 ARM(R) Cortex(R)-M7 | |
stm32l100c | STMicroelectronics(R) STM32L100 ARM(R) Cortex(R)-M3 | × |
stm32l152 | STMicroelectronics(R) STM32L152 ARM(R) Cortex(R)-M3 | |
stm32l432 | STMicroelectronics(R) STM32L432 ARM(R) Cortex(R)-M4F | × |
v850es_fx2 | ルネサス(R) エレクトロニクス V850es/Fx2 upd703231 | |
wch_ch32v307 | WCH CH32v307 RISC-V ボード | |
wch_ch32v307_llvm | WCH CH32v307 RISC-V ボード (ただし、LLVM ツールチェーンを使用) | |
x86_64-w64-mingw32 | GNU/GCC x86_x64 コンパイラー経由のWin* / mingw64 上の PC | |
xtensa32 | Espressif (XTENSA) NodeMCU ESP32 | × |
この表では、*(ブレッドボード) は、ボード (またはその特定のバージョン) が一般的なブレッドボードで簡単に使用できることを意味します。これには、ヘッダー ピンの非常に簡単な手動のはんだ付け/取り付けが必要になる場合があります。
avr
(ARDUINO)、 bcm2835_raspi_b
(RaspberryPi ZERO)、 am335x
(BeagleBoneBlack) などのサポートされているボードの 1 つを使用してリファレンス アプリケーションを開始するのが最も簡単です。リファレンス アプリケーションは、ディレクトリ ref_app とそのサブディレクトリにあります。 。
リファレンス アプリケーションはクロス開発を使用しており、ビルド システムは以下でサポートされています。
*nix
make ツール、Win*
上に移植された*nix
風の make ツール、Win*
、ビルドが正常に完了すると、HEX ファイル ( ref_app.hex
など)、マップ ファイル、サイズ レポートなどの成果物がbin
ディレクトリで利用可能になります。
*nix
でリファレンス アプリケーションを開始するには
target avr
など) を構築するかを検討してください。./target/build/build.sh avr rebuild
を使用して、 build.sh
実行します。avr rebuild
指定して GNU make を呼び出し、その後、 target avr
のソリューション全体を再構築します。*nix
で入手する必要がある場合は、 sudo apt install gcc-avr avr-libc
を実行します。target avr
の*nix
上でのビルド例次に、 target avr
に対して*nix
のコマンド シェルでリファレンス アプリケーションを構築する方法を例に挙げます。このターゲット システムには、基本的にあらゆるARDUINO(R) 互換ボードが含まれます。これは、本書に掲載されている自作基板と実際に使用されている基板の互換性でもあります。
必要に応じてgcc-avr
インストールします。
sudo apt install gcc-avr avr-libc
ckormanyos/real-time-cpp リポジトリを複製または取得します。次に、以下を使用してビルドします。
cd real-time-cpp
cd ref_app
./target/build/build.sh avr rebuild
target stm32f446
の*nix
でのビルド例ここでは、ARM(R) ターゲットの*nix
でコマンド シェル上にリファレンス アプリケーションを構築する方法を例示します。たとえば、ビルド バリアントtarget stm32f446
考えてみましょう。 STMicroelectronics(R) の NUCLEO-F446RE ボードは、これに便利に使用できます。
必要に応じてgcc-arm-none-eabi
をインストールします。
sudo apt install gcc-arm-none-eabi
ckormanyos/real-time-cpp リポジトリを複製または取得します。次に、以下を使用してビルドします。
cd real-time-cpp
cd ref_app
./target/build/build.sh stm32f446 rebuild
target stm32f446
の MacOS でのビルド例次に、MacOS のコマンド シェルで ARM(R) ターゲット用のリファレンス アプリケーションを構築する方法を例示します。たとえば、ビルド バリアントtarget stm32f446
考えてみましょう。 STMicroelectronics(R) の NUCLEO-F446RE ボードは、これに便利に使用できます。
ckormanyos/real-time-cpp リポジトリを複製または取得します。
MacOS 上の GNUmake のデフォルト バージョン 3.81 は (現在) 使用できます。このリポジトリで使用されるメイク ファイルは、このリポジトリと互換性があります。背景情報については、第 273 号も参照してください。
make
を直接手動で呼び出してターゲットをビルドします。
cd real-time-cpp
cd ref_app
make -f target/app/make/app_make.gmk rebuild TGT=stm32f446
ツールチェーンが必要な場合は、参照アプリケーションのターゲットを構築する前に、ツールチェーンをインストールまたは取得する必要があります。
必要に応じて、 wget
経由でgcc-arm-none-eabi
ツールチェーンを取得 (またはオプションでインストール) できます。この場合、Arm GNU Toolchain Downloads にある MacOS 用の最新のgcc-arm-none-eabi
使用すると便利であることがわかりました。
arm-non-eabi
ツールチェーンはwget
経由で取得でき、シェル内でローカルに正常に使用できます。これが必要な場合は、以下の段階的な手順に従ってください。
ステップ 1: ローカル ディレクトリ ( macos-gnu-arm-toolchain
など) を作成し、そこにcd
。
cd real-time-cpp
mkdir -p macos-gnu-arm-toolchain
cd macos-gnu-arm-toolchain
ステップ 2: wget
を使用してツールチェーンの tarball をフェッチし、解凍して、コンパイラーのbin
ディレクトリをシェルの実行可能パスに追加します。
wget --no-check-certificate https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-darwin-x86_64-arm-none-eabi.tar.xz
tar -xvf arm-gnu-toolchain-12.2.rel1-darwin-x86_64-arm-none-eabi.tar.xz
PATH= $( pwd ) /arm-gnu-toolchain-12.2.rel1-darwin-x86_64-arm-none-eabi/bin: $PATH
ステップ 3: 必要に応じて、パスを簡単にチェックするためにPATH
echo
。 arm-non-eabi-g++
のバージョンをクエリすることも役立つ場合があります。これにより、ツールチェーンがこのシェルのローカルPATH
に正しく追加されたことを確認することが期待されます。
echo $PATH
arm-none-eabi-g++ -v
ここで、コマンドを使用して、 make
を直接呼び出してターゲットをビルドするだけです (これは、上記の*nix
の場合と同じです)。
cd real-time-cpp
cd ref_app
make -f target/app/make/app_make.gmk rebuild TGT=stm32f446
Win*
Win*
上で実行される必要な GNU/GCC クロス コンパイラーを (ckormanyos/real-time-cpp-toolchains リポジトリーから) 取得してセットアップします。ref_app.sln
を開きます。 Microsoft(R) VisualStudio(R) のref_app
ビルドは、外部Makefileタイプのプロジェクト ワークスペースを使用したクロス開発を多用します。 GNUmake は、ビルド プロセスのバッチ ファイルを介して呼び出されます。その後、いくつかの Makefile と組み合わせて実行されます。
Win32 用のDebug
またはRelease
以外のref_app
ターゲットをビルドするには、クロスコンパイラー (GNU/GCC クロスコンパイラー) が必要です。詳細については、以下のテキストを参照してください。
VisualStudio(R) 上のリファレンス アプリケーション向けにWin*
上で動作する GNU/GCC クロス コンパイラーは、ツールチェーンリポジトリ ckormanyos/real-time-cpp-toolchains にあります。ツールチェーンリポジトリには、これらの移植された GNU/GCC コンパイラのインストール、移動、および使用に関する詳細な手順が含まれています。
GNUmake for Win*
に関する注意: Win*
で使用できる GNUmake は、ckormanyos/make-4.2.1-msvc-build リポジトリにあります。必要に応じて、このリポジトリのコードを複製または取得します。 MSVC を使用して、 x64
Release
構成でmake-4.2.1
ビルドします (つまり、VC 14.2 以降、Community Edition は OK)。
クロス環境 CMake はリファレンス アプリケーションを構築できます。この目的のために、サポートされているターゲットごとに CMake ファイルも作成されています。
たとえば、CMake を使用してavr
ターゲットのリファレンス アプリケーションを構築することを考えてみましょう。そのパターンを以下に示します。
cd real-time-cpp
mkdir build
cd build
cmake ../ref_app -DTRIPLE=avr -DTARGET=avr -DCMAKE_TOOLCHAIN_FILE=../ref_app/cmake/gcc-toolchain.cmake
make -j ref_app
ここでは、たとえば、サポートされている ARM(R) ターゲットの 1 つに対するリファレンス アプリケーションを CMake で構築することを検討します。そのパターンを以下に示します。この場合、次の make オプションを特定する必要があります。
-DTRIPLE=avr -DTARGET=avr
これらのオプションを、ビルド中のstm32f446
ARM(R) ベースのターゲット向けのものに切り替えます。
-DTRIPLE=arm-none-eabi -DTARGET=stm32f446
stm32f446
(つまり、Cortex(R)-M4F を搭載した ST Microelectronics(R) STM32F446 ARM(R)) の CMake ビルドを実行するためのコマンド全体を明確にしましょう。
cd real-time-cpp
mkdir build
cd build
cmake ../ref_app -DTRIPLE=arm-none-eabi -DTARGET=stm32f446 -DCMAKE_TOOLCHAIN_FILE=../ref_app/cmake/gcc-toolchain.cmake
make -j ref_app
他のターゲット用に CMake を使用してビルドする場合は、標準の*nix
パターンに従ってビルドします。また、 x86_64-w64-mingw32
または MSYS のhost
用の CMake を使用したビルド、Cygwin または同様の*nix
風のシェルまたはコンソールも機能するはずです。
次のコマンド シーケンスは、 *nix
のようなシェルまたはコンソール上でネイティブhost
用にビルドされます。
cd real-time-cpp
mkdir build
cd build
cmake ../ref_app -DTARGET=host -DCMAKE_TOOLCHAIN_FILE=../ref_app/cmake/gcc-toolchain.cmake
make -j ref_app
ATMEL(R) AtmelStudio(R) 7 用のワークスペース ソリューションもあります。これはref_app.atsln
と呼ばれ、同じく ref_app ディレクトリにあります。リファレンス アプリケーションと各サンプルの両方に ATMEL Studio プロジェクトがあります。このリポジトリの ATMEL Studio プロジェクトは、AVR ターゲットのみをサポートします。
ATMEL Studio を使用する場合は、これらのプロジェクトに追加のライブラリを使用したり、追加のライブラリを含めたりする必要はありません (ATMEL Studio の標準インストール中に通常インストールされるライブラリを除く)。
スタートアップ コードやリンカー定義ファイルなどのターゲットの詳細は、ref_app/target ディレクトリとそのサブディレクトリにあります。サポートされているターゲット マイクロコントローラー システムごとに個別のサブディレクトリがあります。
target avr
と呼ばれる MICROCHIP(R) [旧 ATMEL(R)] AVR(R) 構成は、クラシック ARDUINO(R) 互換ボード上で動作します。プログラムはportb.5
の黄色の LED を切り替えます。
target atmega4809
と呼ばれる MICROCHIP(R) [旧 ATMEL(R)] ATmega4809 構成は、内部共振器でクロック動作する ARDUINO(R) EVERY 互換ボード上で動作します。 porte.2
(つまりD5
) の黄色の LED を切り替えます。
Espressif (XTENSA) NodeMCU ESP32 実装は、Espressif SDK のサブセットを使用して、コアの 1 つで排他的に単一の OS タスクでリファレンス アプリケーションを実行します。
「ターゲット lpc11c24」と呼ばれる NXP(R) OM13093 LPC11C24 ボード ARM(R) Cortex(R)-M0+ 構成は、 port0.8
の LED を切り替えます。
ARM(R) Cortex(R)-M3 構成 ( target stm32f100
と呼ばれます) は、ST Microelectronics(R) から市販されている STM32VL-DISCOVERY ボード上で実行されます。プログラムはportc.8
の青色 LED を切り替えます。
2 番目の ARM(R) Cortex(R)-M3 構成 ( target stm32l100c
と呼ばれます) は、ST Microelectronics(R) から市販されている STM32L100-DISCOVERY ボード上で実行されます。プログラムはportc.8
の青色 LED を切り替えます。
3 番目の ARM(R) Cortex(R)-M3 構成 ( target stm32l152
と呼ばれます) は、ST Microelectronics(R) から市販されている STM32L152C-DISCOVERY ボード上で実行されます。プログラムはportb.6
の青色 LED を切り替えます。
最初の ARM(R) Cortex(R)-M4F 構成 ( target stm32f407
と呼ばれる) は、ST Microelectronics(R) から市販されている STM32F4-DISCOVERY ボード上で実行されます。プログラムは、 portd.15
の青色 LED を切り替えます。
別の ARM(R) Cortex(R)-M4F 構成 ( target stm32f446
と呼ばれる) は、ST Microelectronics(R) から市販されている STM32F446-NUCLEO-64 ボード上で実行されます。プログラムは、 porta.5
の緑色の LED を切り替えます。興味のある方のために、このシステム用の Ozone デバッグ ファイルが提供されています。
最初の ARM(R) Cortex(R)-M7 構成 ( target stm32h7a3
と呼ばれる) は、ST Microelectronics(R) から市販されている STM32H7A3-NUCLEO-144 ボード上で実行されます。プログラムは、 portb.0
の緑色の LED を切り替えます。
ARM(R) A8 構成 ( target am335x
と呼ばれる) は、BeagleBone ボード (ブラック エディション) 上で実行されます。ホワイト エディションの場合、CPU クロックを 1 から下げる必要があります。 *nix
ディストリビューションから独立して実行される BeagleBone 用のベアメタル プログラムを作成します。私たちのプログラムは、FAT32 SDHC マイクロカードに保存されているMLOと呼ばれる生のバイナリ ファイルから BeagleBone を起動するように設計されています。バイナリ ファイルには、2 つの 32 ビット整数で構成される特別なブート ヘッダーが含まれています。プログラムは SD カードから RAM メモリにロードされ、その後実行されます。 BeagleBone black の電源を入れるときは、ボードの電源を入れながらブート ボタン (S2) を押す必要があります。プログラムは、最初のユーザー LED ( port1.21
の LED1) を切り替えます。
ARM(R) 1176-JZF-S 構成 ( target bcm2835_raspi_b
と呼ばれます) は、RaspberryPi(R) Zero (PiZero) シングル コア コントローラー上で実行されます。このプロジェクトでは、PiZero 用のベアメタル プログラムを作成します。このプログラムは、ボード上のあらゆる種類の*nix
ディストリビューションから独立して実行されます。私たちのプログラムは、生のバイナリ ファイルから PiZero を起動するように設計されています。生のバイナリ ファイルはkernel.imgと呼ばれ、FAT32 SDHC マイクロカードに保存されます。プログラムobjcopy は、出力フラグ-O binary
使用して ELF ファイルから生のバイナリを抽出するために使用できます。 kernel.img ファイルは、他の 3 つのファイル、bootcode.bin、start.elf、および (オプションの) config.txt とともに SD カードに保存されます。これらはすべてインターネットで説明されています。このリポジトリには、ベアメタル リファレンス アプリケーションを実行する SD カード用の PiZero ブート コンテンツの完全なセットが含まれています。プログラムは、GPIO インデックス0x47
で GPIO ステータス LED を切り替えます。
rpi_pico_rp2040
ターゲット構成は、デュアルコア ARM(R) Cortex(R)-M0+ でクロック動作する RaspberryPi(R) Pico RP2040 を採用しています。 Blinky_Pico_dual_core_nosdk
リポジトリに由来し、(感謝の意を込めて) Blinky_Pico_dual_core_nosdk リポジトリから引用されました。
rpi_pico2_rp2350
ターゲット構成は、デュアルコア ARM(R) Cortex(R)-M33 でクロック動作する RaspberryPi(R) Pico2 RP2350 を採用しています。 2040
と同じブーツ構造を持っています。同様に、このデュアルコア スタートアップは、最新化されたBlinky_Pico2_dual_core_nosdk
リポジトリで明らかにされた取り組みによって先駆けられました。
ターゲットv850es_fx2
は、クラシック Renesas(R) V850es/Fx2 コアを使用します。 F-Line Drive Itスターター キットの upd703231 マイクロコントローラー派生品が使用されます。
riscvfe310
ターゲットは、Spark Fun の市販のRed Thing Plusボード上の SiFive RISC-V FE310 SoC を利用します。ポートGPIO0.5
の青色 LED が切り替わります。
wch_ch32v307
の適応は、WCH CH32v307 ボード上で実行されます。 Nanjing Qinheng Microelectronics Co., Ltd. の RISC-V CH32v307 マイクロコントローラーを使用しています。有線接続を介してポートGPIOC.0
に手動で接続された青色 LED1 が点滅トグルを提供します。同様の適応wch_ch32v307_llvm
、GCC RISC-V の代わりに LLVM RISC-V ツールチェーンを使用することを除いて、本質的に同じです。
ターゲットnxp_imxrt1062
は、Spark Fun の Teensy 4.0 ボード上で実行されます。オレンジ色のユーザー LED が切り替わります。
他の互換性のあるボードについては、お気軽に私に直接ご連絡いただくか、ご希望のターゲット システムのサポートをリクエストする問題を送信してください。
ベンチマークは、マイクロコントローラーのパフォーマンスとパフォーマンス クラスを識別するためのスケーラブルでポータブルな手段を提供します。詳細については、ベンチマーク ページの詳細情報を参照してください。
このリポジトリのプロジェクトは、 OS を使用せずに、自己作成のスタートアップ コードを使用して、ネイキッド、ベアメタル モードでプログラムされています。ネイティブ C++ と独自の標準ライブラリ以外の外部ライブラリは使用されません。
たとえば、このリポジトリでサポートされているいくつかの人気のあるターゲット システムの 1 つである BeagleBone Black Edition (BBB、 target am335x
とも呼ばれます) を考えてみましょう。このボード上のプロジェクトは、SD カード上のバイナリ イメージ ファイルMLOから起動します。このリポジトリ内の他のすべてのプロジェクトと同様に、BBB プロジェクトは独自の静的初期化とチップ初期化 (つまり、この特定のケースでは ARM(R) 8 AM335x プロセッサのチップ初期化) を実行します。 BBB プロジェクトは、初期化に続いてmain()
にジャンプし、 am335x
MCAL を初期化し、自己作成のマルチタスク スケジューラを開始します。
下の画像は、ベアメタル BeagleBone Black Edition の動作を示しています。このベアメタル動作モードでは、BBB 上で実行中の*nix
OS、キーボード、マウス、モニタ、デバッグ インターフェイス、エミュレータは存在しません。
ボード上のマイクロコントローラーは、上記のベンチマークの 1 つを周期的に実行します。マルチタスク動作では、最初のユーザー LED がport1.21
で切り替わり、オシロスコープがデジタル I/O port1.15
、BBB のヘッダー ピンP8.15
でベンチマークの時間信号のリアルタイム測定をキャプチャします。
ビルド ステータス バッジは、夜間の CI ビルドとテストの状態を表します。
avr-gcc
ツールチェーンリポジトリ ckormanyos/avr-gcc-build は、 x86_64-linux-gnu
およびx86_64-w64-mingw32
用の最新のavr-gcc
ツールチェーンをビルドします。シェルおよび YAML スクリプトは、GHA ランナー上のソースから直接avr-gcc
ビルドします。さらに、不定期の GitHub リリースでは、 x86_64-linux-gnu
およびx86_64-w64-mingw32
用の事前構築されたavr-gcc
ツールチェーンが提供されます。
このリポジトリは、ソースから独自のavr-gcc
ツールチェーンを構築する方法を学ぶのに最適な場所です。単純でよく説明されたシェルと YAML スクリプトは、理解、使用、適応が簡単です。
上で述べたように、組み込みツールチェーンのより詳細かつ広範囲については、ckormanyos/real-time-cpp-toolchains で説明されています。これらには、前述のavr-gcc
ツールチェーンやその他のツールチェーン (他では見つけにくいものもあります) が含まれます。
リファレンス アプリケーションとサンプル (コード スニペットも) は、 *nix
上の GNU/GCC コンパイラーと GNUmake を使用して構築できます。 GNU/GCC クロス コンパイラーと*nix
上の GNUmake は、標準の get-install 実践後など、標準の実行可能パスで利用できると想定されています。
Win*
用に移植された一部の GNU/GCC クロス コンパイラーは、ツールチェーンリポジトリ real-time-cpp-toolchains で利用できます。これらは、Microsoft(R) VisualStudio(R) 内で開発/構築するときに、リファレンス アプリケーションのマイクロコントローラー ソリューション構成とともに使用できます。 GNUmake、SED など、他のさまざまな GNU ツールが移植されており、そこにあります。これらは、 Win*
上でref_app
などのクロス埋め込みプロジェクトをビルドするときに Makefile で使用されます。
Win*
上のリファレンス アプリケーションでは、Makefile はそれぞれのツールおよび GNU/GCC ツールチェーンに対して自己定義のデフォルトの場所を使用します。 Win*
上のツールチェーンのデフォルトの場所は./ref_app/tools/Util/msys64/usr/local
です。この特定のツールチェーンの場所は、 msys2
/ mingw64
システムからインスピレーションを得ています。
Win*
上のクロス MSVC/GCC ビルドを目的としたツールチェーンはそこに配置されている必要があります。これらのツールチェーンはこのリポジトリの一部ではないため、オプションで CMD バッチで VisualStudio(R) プロジェクトを使用する場合、サポートされているWin*
ビルドを使用する場合は、これらのツールチェーンを個別に取得する必要があります。
Win*
上でクロス MSVC/GCC ビルド用のツールチェーンを取得して使用するための詳細な手順は、real-time-cpp-toolchains リポジトリで入手できます。これらの手順は、Microsoft(R) VisualStudio(R) プロジェクトを選択して (上記の通常の MSVC/ Win*
方法を介して) リファレンス アプリケーションを構築するときに、これらのツールチェーンを使用するためのガイダンスを提供します。
リファレンスを構築するには、GCC 5 ~ 13 (一般に高いほど有利) または MSVC 14.2 以降など、高レベルの C++14 (またはそれ以上) の認識と準拠を備えた GNU/GCC ポート (または他のコンパイラ) が必要です。アプリケーション (および例とコード スニペット)。
コード スニペットの一部は、C++14 だけでなく、C++17、20、23 以降の言語要素も示しています。したがって、C++17 サポート、または C++20、23 サポート (GCC 13、clang 15、MSVC 14.3 以降など) を備えたコンパイラーは、すべてのコード スニペットを成功させるのに有益です。
<chrono>
、 <ratio>
、および一部の内部特性ヘッダーなどの自己作成 STL の小さな部分は、GNU General Public License バージョン 3 以降に基づいてライセンスされています。