Ini adalah kode pendamping untuk buku CM Kormanyos, C++ Real-Time: Pemrograman Mikrokontroler Berorientasi Objek dan Templat yang Efisien, Edisi Keempat (Springer, Heidelberg, 2021) ISBN 9783662629956.
Repositori ini memiliki beberapa bagian utama.
ref_app
terletak di ref_app. Ini juga termasuk tolok ukurnya. Kompiler lintas GNU/GCC dan berbagai alat tambahan yang berjalan di Win*
, secara opsional diperlukan untuk build tertentu seperti dijelaskan di bawah, dapat ditemukan di repositori ckormanyos/real-time-cpp-toolchains terkait.
Aplikasi referensi melakukan booting dengan kode startup kecil dan selanjutnya menginisialisasi lapisan abstraksi mikrokontroler kurus (MCAL). Kontrol kemudian diteruskan ke penjadwal multitasking sederhana yang mengelola aplikasi LED, memanggil tugas benchmark siklik, dan melayani pengawas.
Aplikasi LED mengaktifkan LED pengguna dengan frekuensi
Aplikasi referensi kompatibel dengan C++14, 17, 20, 23 dan seterusnya.
Perangkat lunak aplikasi diimplementasikan satu kali dan digunakan secara seragam pada setiap target yang didukung di ref_app. Perbedaan di antara masing-masing target hanya muncul di lapisan perangkat lunak bawah yang berkaitan dengan detail startup/MCAL khusus chip dan khusus board.
Dengan cara ini proyek menunjukkan tingkat portabilitas yang tinggi.
Aplikasi referensi mendukung target berikut:
Nama target (seperti yang digunakan dalam perintah build) | Deskripsi Sasaran | *(papan tempat memotong roti) |
---|---|---|
avr | MICROCHIP(R) [mantan ATMEL(R)] AVR(R) ATmega328P | X |
atmega2560 | MICROCHIP(R) [sebelumnya ATMEL(R)] AVR(R) ATmega2560 | |
atmega4809 | MICROCHIP(R) [mantan ATMEL(R)] AVR(R) ATmegax4809 | X |
am335x | BeagleBone dengan Texas Instruments(kanan) AM335x ARM(kanan) A8 | |
bcm2835_raspi_b | RaspberryPi(R) Nol dengan ARM1176-JZFS(TM) | |
Debug / Release | PC di Win* melalui kompiler MSVC x64 Debug / Release | |
host | PC/Workstation di Win* / mingw64 / *nix melalui kompiler host | |
lpc11c24 | NXP(R) OM13093 LPC11C24 papan LENGAN(R) Korteks(R)-M0+ | |
nxp_imxrt1062 | Papan Teensy 4.0 / NXP(R) iMXRT1062 ARM(R) Cortex(R)-M7 | X |
riscvfe310 | Lima SoC RISC-V FE310 | |
rl78 | Renesa(kanan) RL78/G13 | |
rpi_pico_rp2040 | RaspberryPi(R) Pico RP2040 dengan dual ARM(R) Cortex(R)-M0+ | X |
rpi_pico2_rp2350 | RaspberryPi(R) Pico2 RP2350 dengan dual ARM(R) Cortex(R)-M33 | X |
rx63n | Renesa(kanan) RX630/RX631 | |
stm32f100 | STMicroelectronics(R) STM32F100 ARM(R) Cortex(R)-M3 | X |
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 | X |
stm32l152 | STMicroelectronics(R) STM32L152 ARM(R) Cortex(R)-M3 | |
stm32l432 | STMicroelectronics(R) STM32L432 ARM(R) Cortex(R)-M4F | X |
v850es_fx2 | Renesas(kanan) elektronik V850es/Fx2 upd703231 | |
wch_ch32v307 | Papan WCH CH32v307 RISC-V | |
wch_ch32v307_llvm | Papan WCH CH32v307 RISC-V (tetapi menggunakan rantai alat LLVM) | |
x86_64-w64-mingw32 | PC di Win* / mingw64 melalui kompiler GNU/GCC x86_x64 | |
xtensa32 | Espresif (XTENSA) NodeMCU ESP32 | X |
Dalam tabel ini, *(papan tempat memotong roti) berarti papan (atau versi tertentu dari papan tempat memotong roti) dapat langsung digunakan dengan papan tempat memotong roti pada umumnya. Ini mungkin memerlukan penyolderan/pemasangan pin header secara manual.
Cara termudah untuk memulai aplikasi referensi adalah dengan menggunakan salah satu papan yang didukung, seperti avr
(ARDUINO) atau bcm2835_raspi_b
(RaspberryPi ZERO) atau am335x
(BeagleBoneBlack), dll. Aplikasi referensi dapat ditemukan di direktori ref_app dan subdirektorinya .
Aplikasi referensi menggunakan sistem pengembangan dan pembangunan silang yang didukung pada:
*nix
make tools yang dikombinasikan dengan Bash/GNUmake (skrip bash) di LINUX/MacOS,*nix
-like make tools di Win*
dalam kombinasi dengan skrip batch atau Microsoft(R) Visual Studio(R) melalui External Makefile ,Win*
, Setelah pembangunan berhasil diselesaikan, artefak yang dihasilkan termasuk file HEX (seperti ref_app.hex
), file peta, laporan ukuran, dll., tersedia di direktori bin
.
Untuk memulai dengan aplikasi referensi di *nix
target avr
) yang ingin Anda buat.build.sh
dengan perintah: ./target/build/build.sh avr rebuild
.avr rebuild
yang kemudian membangun kembali seluruh solusi untuk target avr
.*nix
, jalankan sudo apt install gcc-avr avr-libc
.*nix
untuk target avr
Kami sekarang akan memberikan contoh bagaimana membangun aplikasi referensi pada shell perintah di *nix
untuk target avr
. Sistem target ini pada dasarnya mencakup semua board yang kompatibel dengan ARDUINO(R). Ini juga merupakan kompatibilitas papan yang sebenarnya digunakan dengan papan buatan sendiri di dalam buku.
Instal gcc-avr
jika diperlukan.
sudo apt install gcc-avr avr-libc
Kloning atau dapatkan repositori ckormanyos/real-time-cpp. Kemudian bangun dengan:
cd real-time-cpp
cd ref_app
./target/build/build.sh avr rebuild
*nix
untuk target stm32f446
Kami sekarang akan memberikan contoh bagaimana membangun aplikasi referensi pada shell perintah di *nix
untuk target ARM(R). Misalnya saja target stm32f446
. Papan NUCLEO-F446RE dari STMicroelectronics(R) dapat dengan mudah digunakan untuk ini.
Instal gcc-arm-none-eabi
jika diperlukan.
sudo apt install gcc-arm-none-eabi
Kloning atau dapatkan repositori ckormanyos/real-time-cpp. Kemudian bangun dengan:
cd real-time-cpp
cd ref_app
./target/build/build.sh stm32f446 rebuild
target stm32f446
Kami sekarang akan memberikan contoh bagaimana membangun aplikasi referensi di shell perintah di MacOS untuk target ARM(R). Misalnya saja target stm32f446
. Papan NUCLEO-F446RE dari STMicroelectronics(R) dapat dengan mudah digunakan untuk ini.
Kloning atau dapatkan repositori ckormanyos/real-time-cpp.
GNUmake versi default 3.81 di MacOS (sekarang) dapat digunakan. File make yang digunakan dalam repositori ini telah dibuat kompatibel dengannya. Untuk informasi latar belakang, lihat juga edisi 273.
Bangun target dengan panggilan manual langsung untuk make
.
cd real-time-cpp
cd ref_app
make -f target/app/make/app_make.gmk rebuild TGT=stm32f446
Jika rantai alat diperlukan maka harus dipasang atau diambil sebelum membangun target aplikasi referensi.
Anda dapat memperolehnya melalui wget
(atau menginstal secara opsional) rantai alat gcc-arm-none-eabi
jika diperlukan. Dalam hal ini, saya merasa nyaman menggunakan gcc-arm-none-eabi
modern untuk MacOS yang dapat ditemukan di Unduhan Arm GNU Toolchain.
Toolchain arm-non-eabi
dapat diambil melalui wget
dan berhasil digunakan secara lokal di shell. Jika diinginkan, ikuti prosedur langkah demi langkah di bawah ini.
Langkah 1: Buat direktori lokal (seperti macos-gnu-arm-toolchain
) dan cd
ke dalamnya.
cd real-time-cpp
mkdir -p macos-gnu-arm-toolchain
cd macos-gnu-arm-toolchain
Langkah 2: Ambil tarball toolchain dengan wget
, buka kemasannya dan tambahkan direktori bin
kompiler ke jalur shell yang dapat dieksekusi.
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
Langkah 3: Secara opsional, echo
PATH
untuk pemeriksaan jalur cepat. Mengkueri versi arm-non-eabi-g++
juga dapat membantu. Hal ini diharapkan untuk memverifikasi bahwa rantai alat telah ditambahkan dengan benar ke PATH
lokal shell ini.
echo $PATH
arm-none-eabi-g++ -v
Sekarang cukup gunakan perintah untuk membangun target dengan panggilan langsung ke make
(yang sama seperti yang ditunjukkan di atas untuk kasus *nix
).
cd real-time-cpp
cd ref_app
make -f target/app/make/app_make.gmk rebuild TGT=stm32f446
Untuk memulai dengan aplikasi referensi di Win*
Win*
, seperti dijelaskan secara rinci pada beberapa paragraf di bawah.ref_app.sln
di direktori ref_app. Pembuatan ref_app
di Microsoft(R) VisualStudio(R) banyak memanfaatkan pengembangan silang menggunakan ruang kerja proyek bertipe External Makefile . GNUmake dipanggil melalui file batch dalam proses pembangunan. Ini kemudian berjalan dalam kombinasi dengan beberapa Makefile.
Untuk membangun target ref_app
apa pun selain Debug
atau Release
untuk Win32, diperlukan kompiler silang (kompiler silang GNU/GCC). Lihat teks di bawah untuk detail tambahan.
Kompiler lintas GNU/GCC yang berjalan pada Win*
yang ditujukan untuk aplikasi referensi pada VisualStudio(R) dapat ditemukan di repositori rantai alat , ckormanyos/real-time-cpp-toolchains. Repositori toolchains berisi petunjuk rinci tentang cara menginstal, memindahkan, dan menggunakan kompiler GNU/GCC porting ini.
Catatan tentang GNUmake untuk Win*
: GNUmake yang mampu digunakan pada Win*
dapat ditemukan di repositori ckormanyos/make-4.2.1-msvc-build. Jika diinginkan, kloning atau dapatkan kode repositori ini. Bangun make-4.2.1
dalam konfigurasi Release
x64
dengan MSVC (yaitu, VC 14.2 atau lebih baru, Edisi Komunitas diperbolehkan).
CMake Lintas Lingkungan dapat membangun aplikasi referensi. Untuk tujuan ini, file CMake juga telah dibuat untuk setiap target yang didukung.
Misalnya saja, membangun aplikasi referensi untuk target avr
dengan CMake. Polanya ditunjukkan di bawah ini.
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
Kami sekarang akan mempertimbangkan, misalnya, membangun aplikasi referensi untuk salah satu target ARM(R) yang didukung dengan CMake. Polanya ditunjukkan di bawah ini. Dalam hal ini, kita perlu mengidentifikasi opsi make berikut:
-DTRIPLE=avr -DTARGET=avr
Alihkan opsi ini ke opsi yang ditujukan untuk target berbasis stm32f446
ARM(R) yang sedang dibuat.
-DTRIPLE=arm-none-eabi -DTARGET=stm32f446
Mari kita perjelas perintah secara keseluruhan untuk menjalankan build CMake untuk stm32f446
(yaitu, ST Microelectronics(R) STM32F446 ARM(R) yang menampilkan Cortex(R)-M4F).
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
Saat membangun dengan CMake untuk target lain, ikuti pola *nix
standar untuk membangun. Juga membangun dengan CMake untuk x86_64-w64-mingw32
atau host
dari MSYS, Cygwin atau shell atau konsol serupa *nix
juga dapat berfungsi.
Urutan perintah berikut akan dibuat untuk host
asli pada shell atau konsol mirip *nix
.
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
Ada juga solusi ruang kerja untuk ATMEL(R) AtmelStudio(R) 7. Ini disebut ref_app.atsln
dan juga terletak di direktori ref_app. Ada proyek ATMEL Studio baik untuk aplikasi referensi maupun untuk masing-masing contoh. Proyek ATMEL Studio di repositori ini hanya mendukung target AVR.
Jika Anda memutuskan untuk menggunakan ATMEL Studio, Anda tidak perlu menggunakan atau menyertakan perpustakaan tambahan apa pun untuk proyek ini (selain yang biasanya diinstal selama instalasi standar ATMEL Studio).
Detail target termasuk kode startup dan file definisi linker dapat ditemukan di direktori ref_app/target dan subdirektorinya. Ada subdirektori individual untuk setiap sistem mikrokontroler target yang didukung.
Konfigurasi MICROCHIP(R) [sebelumnya ATMEL(R)] AVR(R) yang disebut target avr
berjalan pada board klasik yang kompatibel dengan ARDUINO(R). Program ini mengaktifkan LED kuning pada portb.5
.
Konfigurasi MICROCHIP(R) [sebelumnya ATMEL(R)] ATmega4809 yang disebut target atmega4809
berjalan pada ARDUINO(R) SETIAP papan yang kompatibel dengan clock dengan resonator internal di porte.2
(yaitu, D5
).
Implementasi Espressif (XTENSA) NodeMCU ESP32 menggunakan subset dari Espressif SDK untuk menjalankan aplikasi referensi dengan satu tugas OS secara eksklusif pada 1 intinya.
Konfigurasi board NXP(R) OM13093 LPC11C24 ARM(R) Cortex(R)-M0+ yang disebut "target lpc11c24" mengaktifkan LED pada port0.8
.
Konfigurasi ARM(R) Cortex(R)-M3 (disebut target stm32f100
) berjalan pada papan STM32VL-DISCOVERY yang tersedia secara komersial dari ST Microelectronics(R). Program ini mengaktifkan LED biru pada portc.8
.
Konfigurasi ARM(R) Cortex(R)-M3 kedua (disebut target stm32l100c
) berjalan pada papan STM32L100-DISCOVERY yang tersedia secara komersial dari ST Microelectronics(R). Program ini mengaktifkan LED biru pada portc.8
.
Konfigurasi ARM(R) Cortex(R)-M3 ketiga (disebut target stm32l152
) berjalan pada papan STM32L152C-DISCOVERY yang tersedia secara komersial dari ST Microelectronics(R). Program ini mengaktifkan LED biru pada portb.6
.
Konfigurasi ARM(R) Cortex(R)-M4F pertama (disebut target stm32f407
) berjalan pada papan STM32F4-DISCOVERY yang tersedia secara komersial dari ST Microelectronics(R). Program ini mengaktifkan LED biru pada portd.15
.
Konfigurasi ARM(R) Cortex(R)-M4F lainnya (disebut target stm32f446
) berjalan pada papan STM32F446-NUCLEO-64 yang tersedia secara komersial dari ST Microelectronics(R). Program ini mengaktifkan LED hijau pada porta.5
. File debug Ozon disediakan untuk sistem ini bagi mereka yang tertarik.
Konfigurasi ARM(R) Cortex(R)-M7 pertama (disebut target stm32h7a3
) berjalan pada papan STM32H7A3-NUCLEO-144 yang tersedia secara komersial dari ST Microelectronics(R). Program ini mengaktifkan LED hijau pada portb.0
.
Konfigurasi ARM(R) A8 (disebut target am335x
) berjalan pada papan BeagleBone (edisi hitam). Untuk edisi putih, jam CPU perlu dikurangi *nix
yang ada di board. Program kami dirancang untuk mem-boot BeagleBone dari file biner mentah bernama MLO yang disimpan di kartu mikro FAT32 SDHC. File biner menyertakan header boot khusus yang terdiri dari dua bilangan bulat 32-bit. Program ini dimuat dari kartu SD ke memori RAM dan selanjutnya dijalankan. Saat menyalakan BeagleBone hitam, tombol boot (S2) harus ditekan saat menyalakan papan. Program ini mengaktifkan LED pengguna pertama (LED1 pada port1.21
).
Konfigurasi ARM(R) 1176-JZF-S (disebut target bcm2835_raspi_b
) berjalan pada pengontrol inti tunggal RaspberryPi(R) Zero (PiZero). Proyek ini menciptakan program bare-metal untuk PiZero. Program ini berjalan secara independen dari semua jenis distro *nix
yang ada di board. Program kami dirancang untuk mem-boot PiZero dari file biner mentah. File biner mentah disebut kernel.img dan disimpan di kartu mikro FAT32 SDHC. Program objcopy dapat digunakan untuk mengekstrak biner mentah dari file ELF menggunakan flag keluaran -O binary
. File kernel.img disimpan di kartu SD bersama dengan tiga file lainnya: bootcode.bin, start.elf dan (opsional) config.txt, semuanya dijelaskan di internet. Satu set lengkap konten boot PiZero untuk kartu SD yang menjalankan aplikasi referensi bare-metal disertakan dalam repo ini. Program ini mengaktifkan LED status GPIO pada indeks GPIO 0x47
.
Konfigurasi target rpi_pico_rp2040
menggunakan RaspberryPi(R) Pico RP2040 dengan dual-core ARM(R) Cortex(R)-M0+ yang memiliki clock pada Blinky_Pico_dual_core_nosdk
.
Konfigurasi target rpi_pico2_rp2350
menggunakan RaspberryPi(R) Pico2 RP2350 dengan dual-core ARM(R) Cortex(R)-M33 yang memiliki clock 2040
. Demikian pula startup dual-core dipelopori oleh upaya yang diungkapkan dalam repo Blinky_Pico2_dual_core_nosdk
yang dimodernisasi.
Target v850es_fx2
menggunakan inti Renesas(R) V850es/Fx2 klasik. Turunan mikrokontroler upd703231 pada starter kit F-Line Drive It digunakan.
Target riscvfe310
menggunakan SoC SiFive RISC-V FE310 pada Red Thing Plus Board Spark Fun yang tersedia secara komersial. LED biru pada port GPIO0.5
diaktifkan.
Adaptasi untuk wch_ch32v307
berjalan pada board WCH CH32v307. Ia menggunakan mikrokontroler RISC-V CH32v307 dari Nanjing Qinheng Microelectronics Co., Ltd. LED1 biru yang dihubungkan secara manual ke port GPIOC.0
melalui sambungan kabel menyediakan sakelar berkedip. Adaptasi serupa wch_ch32v307_llvm
pada dasarnya sama kecuali ia menggunakan rantai alat LLVM RISC-V, bukan GCC RISC-V.
Target nxp_imxrt1062
berjalan di papan Teensy 4.0 dari Spark Fun. LED pengguna oranye diaktifkan.
Untuk papan lain yang kompatibel, silakan hubungi saya secara langsung atau kirimkan masalah yang meminta dukungan untuk sistem target yang Anda inginkan.
Benchmark menyediakan sarana yang terukur dan portabel untuk mengidentifikasi kinerja dan kelas kinerja mikrokontroler. Untuk informasi lebih lanjut, lihat informasi detail di halaman benchmark.
Proyek dalam repo ini diprogram tanpa OS dalam mode bare-metal dengan menggunakan kode startup yang ditulis sendiri. Tidak ada perpustakaan eksternal selain C++ asli dan perpustakaan standarnya sendiri yang digunakan.
Misalnya, BeagleBone Black Edition (BBB, juga dikenal sebagai target am335x
) yang merupakan salah satu dari beberapa sistem target populer yang didukung dalam repositori ini. Proyek pada board ini melakukan booting dari file gambar biner MLO pada kartu SD. Seperti semua proyek lain dalam repositori ini, proyek BBB melakukan inisialisasi statis dan inisialisasi chipnya sendiri (yaitu, dalam kasus khusus ini inisialisasi chip prosesor ARM(R) 8 AM335x). Proyek BBB, setelah inisialisasi, selanjutnya beralih ke main()
yang menginisialisasi MCAL am335x
dan memulai penjadwal multitasking yang kami tulis sendiri.
Gambar di bawah menggambarkan BeagleBone Black Edition yang terbuat dari logam telanjang sedang beraksi. Dalam mode operasi bare-metal ini, tidak ada *nix
OS yang berjalan di BBB, tidak ada keyboard, tidak ada mouse, tidak ada monitor, tidak ada antarmuka debug, dan tidak ada emulator.
Mikrokontroler di papan secara siklis menjalankan salah satu tolok ukur yang disebutkan di atas. LED pengguna pertama diaktifkan pada port1.21
dalam operasi multitasking dan osiloskop menangkap pengukuran waktu nyata dari sinyal waktu benchmark pada port1.15
I/O digital1.15, pin header P8.15
dari BBB.
Lencana status build mewakili status build dan pengujian CI malam hari.
avr-gcc
modern Repo ckormanyos/avr-gcc-build membuat rantai alat avr-gcc
terkini untuk x86_64-linux-gnu
dan x86_64-w64-mingw32
. Skrip Shell dan YAML membuat avr-gcc
langsung dari sumber di runner GHA. Selain itu, rilis GitHub sesekali menyediakan toolchain avr-gcc
bawaan untuk x86_64-linux-gnu
dan x86_64-w64-mingw32
.
Repo ini adalah tempat yang bagus untuk mempelajari cara membuat rantai alat avr-gcc
Anda sendiri dari sumber. Skrip shell dan YAML yang lugas dan dijelaskan dengan baik mudah dipahami, digunakan, atau diadaptasi.
Seperti disebutkan di atas, cakupan rantai alat tertanam yang jauh lebih detail dan luas dijelaskan dalam ckormanyos/real-time-cpp-toolchains. Ini termasuk toolchain avr-gcc
yang disebutkan di atas serta yang lainnya (beberapa sulit ditemukan di tempat lain).
Aplikasi referensi dan contohnya (juga cuplikan kode) dapat dibangun dengan kompiler GNU/GCC dan GNUmake di *nix
. Kompiler lintas GNU/GCC dan GNUmake pada *nix
diasumsikan tersedia dalam jalur standar yang dapat dieksekusi, seperti setelah praktik get-install standar.
Beberapa kompiler lintas GNU/GCC yang di-porting untuk Win*
tersedia di repositori toolchains , real-time-cpp-toolchains. Ini dapat digunakan dengan konfigurasi solusi mikrokontroler dalam aplikasi referensi ketika mengembangkan/membangun dalam Microsoft(R) VisualStudio(R). Berbagai alat GNU lainnya seperti GNUmake, SED, dll telah di-porting dan dapat ditemukan di sana. Ini digunakan di Makefiles Saat membangun proyek lintas tertanam seperti ref_app
di Win*
.
Dalam aplikasi referensi di Win*
, Makefile menggunakan lokasi default yang ditentukan sendiri untuk masing-masing alat dan rantai alat GNU/GCC. Lokasi default rantai alat di Win*
adalah ./ref_app/tools/Util/msys64/usr/local
. Lokasi rantai alat khusus ini terinspirasi oleh sistem msys2
/ mingw64
.
Toolchain yang ditujukan untuk lintas MSVC/GCC yang dibangun di Win*
harus ditempatkan di sana. Rantai alat ini bukan bagian dari repositori ini dan rantai alat ini perlu diperoleh secara terpisah saat menggunakan versi Win*
yang didukung saat secara opsional menggunakan Proyek VisualStudio(R) dengan CMD Batch.
Petunjuk terperinci tentang mendapatkan dan menggunakan rantai alat untuk lintas MSVC/GCC yang dibangun di Win*
tersedia di repositori rantai alat cpp waktu nyata. Petunjuk ini memberikan panduan dalam menggunakan rantai alat ini ketika memilih proyek Microsoft(R) VisualStudio(R) (melalui cara MSVC/ Win*
yang biasa dijelaskan di atas) untuk membangun aplikasi referensi.
Port GNU/GCC (atau kompiler lainnya) dengan tingkat kesadaran dan kepatuhan C++14 (atau lebih tinggi) yang tinggi seperti GCC 5 hingga 13 (lebih tinggi umumnya lebih menguntungkan) atau MSVC 14.2 atau lebih tinggi diperlukan untuk membangun referensi aplikasi (dan contoh serta cuplikan kode).
Beberapa cuplikan kode menunjukkan elemen bahasa tidak hanya dari C++14, tetapi juga dari C++17, 20, 23 dan seterusnya. Oleh karena itu, kompiler dengan dukungan C++17 atau bahkan dukungan C++20, 23 (seperti GCC 13, clang 15, MSVC 14.3, atau lebih tinggi) dapat bermanfaat untuk kesuksesan dengan semua cuplikan kode.
<chrono>
, <ratio>
dan beberapa header ciri internal dilisensikan di bawah GNU General Public License Versi 3 atau lebih tinggi.