Tutorial: Membuat proyek C++ lintas platform di Visual Studio
Pengembangan Visual Studio C dan C++ tidak hanya untuk Windows lagi. Tutorial ini menunjukkan cara menggunakan Visual Studio untuk pengembangan lintas platform C++ di Windows dan Linux. Ini didasarkan pada CMake, jadi Anda tidak perlu membuat atau menghasilkan proyek Visual Studio. Saat Anda membuka folder yang berisi file CMakeLists.txt, Visual Studio mengonfigurasi pengaturan IntelliSense dan build secara otomatis. Anda dapat dengan cepat mulai mengedit, membangun, dan men-debug kode Anda secara lokal di Windows. Kemudian, alihkan konfigurasi Anda untuk melakukan hal yang sama di Linux, semuanya dari dalam Visual Studio.
Dalam tutorial ini, Anda akan mempelajari cara:
- mengkloning proyek CMake sumber terbuka dari GitHub
- buka proyek di Visual Studio
- membangun dan men-debug target yang dapat dieksekusi di Windows
- menambahkan koneksi ke komputer Linux
- membangun dan men-debug target yang sama di Linux
Prasyarat
Menyiapkan Visual Studio untuk Pengembangan C++ Lintas Platform
- Pertama, instal Visual Studio dan pilih pengembangan Desktop dengan pengembangan C++ dan Linux dengan beban kerja C++. Penginstalan minimal ini hanya 3 GB. Tergantung pada kecepatan pengunduhan Anda, penginstalan tidak boleh memakan waktu lebih dari 10 menit.
Menyiapkan komputer Linux untuk Pengembangan C++ Lintas Platform
Visual Studio tidak memerlukan distribusi Linux tertentu. OS dapat berjalan pada komputer fisik, di VM, atau di cloud. Anda juga dapat menggunakan Subsistem Windows untuk Linux (WSL). Namun, untuk tutorial ini, lingkungan grafis diperlukan. WSL tidak disarankan di sini, karena ditujukan terutama untuk operasi baris perintah.
Visual Studio memerlukan alat-alat ini pada komputer Linux: pengkompilasi C++,
gdb
, ,rsync
ssh
,make
, danzip
. Pada sistem berbasis Debian, Anda dapat menggunakan perintah ini untuk menginstal dependensi ini:sudo apt install -y openssh-server build-essential gdb rsync make zip
Visual Studio memerlukan versi terbaru CMake pada komputer Linux yang mengaktifkan mode server (setidaknya 3,8). Microsoft menghasilkan build universal CMake yang dapat Anda instal di distro Linux apa pun. Kami sarankan Anda menggunakan build ini untuk memastikan bahwa Anda memiliki fitur terbaru. Anda bisa mendapatkan biner CMake dari fork Microsoft dari repositori CMake di GitHub. Buka halaman tersebut dan unduh versi yang cocok dengan arsitektur sistem di komputer Linux Anda, lalu tandai sebagai executable:
wget <path to binary> chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
Anda dapat melihat opsi untuk menjalankan skrip dengan
--help
. Kami menyarankan agar Anda menggunakan-prefix
opsi untuk menentukan penginstalan di jalur /usr, karena /usr/bin adalah lokasi default tempat Visual Studio mencari CMake. Contoh berikut menunjukkan skrip Linux-x86_64. Ubah sesuai kebutuhan jika Anda menggunakan platform target yang berbeda.sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
Git untuk windows terinstal pada komputer Windows Anda.
Akun GitHub.
Mengkloning proyek CMake sumber terbuka dari GitHub
Tutorial ini menggunakan Bullet Physics SDK di GitHub. Ini menyediakan deteksi tabrakan dan simulasi fisika untuk banyak aplikasi. SDK mencakup sampel program yang dapat dieksekusi yang mengkompilasi dan menjalankan tanpa harus menulis kode lain. Tutorial ini tidak mengubah kode sumber atau skrip build apa pun. Untuk memulai, kloning repositori bullet3 dari GitHub pada komputer tempat Anda menginstal Visual Studio.
git clone https://github.com/bulletphysics/bullet3.git
Pada menu utama Visual Studio, pilih File > Buka > CMake. Navigasi ke
CMakeLists.txt
file di akar repositori bullet3 yang Anda unduh.Segera setelah Anda membuka folder, struktur folder Anda akan terlihat di Penjelajah Solusi.
Tampilan ini menunjukkan dengan tepat apa yang ada di disk, bukan tampilan logis atau terfilter. Secara default, file tersebut tidak menampilkan file tersembunyi.
Pilih tombol Perlihatkan semua file untuk melihat semua file dalam folder.
Beralih ke tampilan target
Saat Anda membuka folder yang menggunakan CMake, Visual Studio secara otomatis menghasilkan cache CMake. Operasi ini mungkin memakan waktu beberapa saat, tergantung pada ukuran proyek Anda.
Di Jendela Output, pilih Tampilkan output dari lalu pilih CMake untuk memantau status proses pembuatan cache. Ketika operasi selesai, tertulis "Ekstraksi info target selesai."
Setelah operasi ini selesai, IntelliSense dikonfigurasi. Anda dapat membangun proyek, dan men-debug aplikasi. Visual Studio sekarang menampilkan tampilan logis solusi, berdasarkan target yang ditentukan dalam file CMakeLists.
Gunakan tombol Solusi dan Folder di Penjelajah Solusi untuk beralih ke Tampilan Target CMake.
Berikut tampilan tersebut untuk Bullet SDK:
Tampilan target memberikan tampilan yang lebih intuitif tentang apa yang ada di basis sumber ini. Anda dapat melihat beberapa target adalah pustaka dan yang lain dapat dieksekusi.
Perluas simpul dalam Tampilan Target CMake untuk melihat file kode sumbernya, di mana pun file tersebut mungkin berada di disk.
Menambahkan konfigurasi Windows x64-Debug eksplisit
Visual Studio membuat konfigurasi x64-Debug default untuk Windows. Konfigurasi adalah bagaimana Visual Studio memahami target platform apa yang akan digunakan untuk CMake. Konfigurasi default tidak diwakili pada disk. Saat Anda secara eksplisit menambahkan konfigurasi, Visual Studio membuat file yang disebut CMake Pengaturan.json. Ini diisi dengan pengaturan untuk semua konfigurasi yang Anda tentukan.
Tambahkan konfigurasi baru. Buka menu drop-down Konfigurasi di toolbar dan pilih Kelola Konfigurasi.
CMake Pengaturan Editor terbuka. Pilih tanda plus hijau di sisi kiri editor untuk menambahkan konfigurasi baru. Dialog Tambahkan Konfigurasi ke CMake Pengaturan muncul:
Dialog ini memperlihatkan semua konfigurasi yang disertakan dengan Visual Studio, ditambah konfigurasi kustom apa pun yang Anda buat. Jika Anda ingin terus menggunakan konfigurasi x64-Debug yang seharusnya menjadi konfigurasi pertama yang Anda tambahkan. Pilih x64-Debug, lalu pilih tombol Pilih . Visual Studio membuat file CMake Pengaturan.json dengan konfigurasi untuk x64-Debug, dan menyimpannya ke disk. Anda dapat menggunakan nama apa pun yang Anda suka untuk konfigurasi Anda dengan mengubah parameter nama langsung di CMake Pengaturan.json.
Mengatur titik henti, membangun, dan menjalankan di Windows
Dalam langkah ini, kami men-debug contoh program yang menunjukkan pustaka Bullet Physics.
Di Penjelajah Solusi, pilih AppBasicExampleGui dan perluas.
Buka file
BasicExample.cpp
.Atur titik henti yang terkena saat Anda mengklik aplikasi yang sedang berjalan. Peristiwa klik ditangani dalam metode dalam kelas pembantu. Untuk cepat sampai ke sana:
Pilih
CommonRigidBodyBase
bahwa structBasicExample
berasal. Sekitar jalur 30.Klik kanan dan pilih Buka Definisi. Sekarang Anda berada di header CommonRigidBodyBase.h.
Dalam tampilan browser di atas sumber Anda, Anda akan melihat bahwa Anda berada di
CommonRigidBodyBase
. Di sebelah kanan, Anda dapat memilih anggota untuk diperiksa. Buka menu drop-down dan pilihmouseButtonCallback
untuk masuk ke definisi fungsi tersebut di header.
Tempatkan titik henti pada baris pertama dalam fungsi ini. Ini akan terpukul ketika Anda mengklik tombol mouse di dalam jendela aplikasi, saat dijalankan di bawah debugger Visual Studio.
Untuk meluncurkan aplikasi, pilih drop-down peluncuran di toolbar. Ini adalah salah satu dengan ikon putar hijau yang bertuliskan "Pilih Item Startup." Di menu drop-down, pilih AppBasicExampleGui.exe. Nama yang dapat dieksekusi sekarang ditampilkan pada tombol luncurkan:
Pilih tombol luncurkan untuk membangun aplikasi dan dependensi yang diperlukan, lalu luncurkan dengan debugger Visual Studio yang terpasang. Setelah beberapa saat, aplikasi yang sedang berjalan muncul:
Pindahkan mouse Anda ke jendela aplikasi, lalu klik tombol untuk memicu titik henti. Titik henti membawa Visual Studio kembali ke latar depan, dan editor menunjukkan garis tempat eksekusi dijeda. Anda dapat memeriksa variabel aplikasi, objek, utas, dan memori, atau menelusuri kode Anda secara interaktif. Pilih Lanjutkan untuk membiarkan aplikasi dilanjutkan, lalu keluar secara normal. Atau, hentikan eksekusi dalam Visual Studio dengan menggunakan tombol berhenti.
Menambahkan konfigurasi Linux dan menyambungkan ke komputer jarak jauh
Tambahkan konfigurasi Linux. Klik kanan file CMake Pengaturan.json di tampilan Penjelajah Solusi dan pilih Tambahkan Konfigurasi. Anda melihat dialog Tambahkan Konfigurasi ke CMake Pengaturan yang sama seperti sebelumnya. Pilih Linux-Debug kali ini, lalu simpan file CMake Pengaturan.json (ctrl + s).
Visual Studio 2019 versi 16.6 atau yang lebih baru Gulir ke bawah ke bagian bawah CMake Pengaturan Editor dan pilih Tampilkan pengaturan tingkat lanjut. Pilih Unix Makefiles sebagai generator CMake, lalu simpan file CMake Pengaturan.json (ctrl + s).
Pilih Linux-Debug di menu drop-down konfigurasi.
Jika ini pertama kalinya Anda terhubung ke sistem Linux, dialog Koneksi ke Sistem Jarak Jauh muncul.
Dialog memiliki bidang untuk nama host, port, nama pengguna, jenis autentikasi, dan kata sandi. Semua bidang kosong kecuali Port diatur ke 22 dan Jenis autentikasi diatur ke Kata Sandi.
Jika Anda telah menambahkan koneksi jarak jauh, Anda dapat membuka jendela ini dengan membuka Opsi > Alat > Lintas Platform > Pengelola Sambungan.
Berikan informasi koneksi ke komputer Linux Anda dan pilih Koneksi. Visual Studio menambahkan komputer tersebut ke CMake Pengaturan.json sebagai koneksi default Anda untuk Linux-Debug. Ini juga menarik header dari komputer jarak jauh Anda, sehingga Anda mendapatkan IntelliSense khusus untuk koneksi jarak jauh tersebut. Selanjutnya, Visual Studio mengirimkan file Anda ke komputer jarak jauh dan menghasilkan cache CMake pada sistem jarak jauh. Langkah-langkah ini mungkin memakan waktu, tergantung pada kecepatan jaringan dan daya komputer jarak jauh Anda. Anda tahu itu selesai ketika pesan "Ekstraksi info target selesai" muncul di jendela output CMake.
Mengatur titik henti, membangun, dan menjalankan di Linux
Karena ini adalah aplikasi desktop, Anda perlu memberikan beberapa informasi konfigurasi lainnya ke konfigurasi debug.
Dalam tampilan Target CMake, klik kanan AppBasicExampleGui dan pilih Debug dan Luncurkan Pengaturan untuk membuka file launch.vs.json yang ada di subfolder .vs tersembunyi. File ini bersifat lokal untuk lingkungan pengembangan Anda. Anda dapat memindahkannya ke akar proyek Anda jika Anda ingin memeriksanya dan menyimpannya dengan tim Anda. Dalam file ini, konfigurasi telah ditambahkan untuk AppBasicExampleGui. Pengaturan default ini berfungsi dalam banyak kasus, tetapi tidak di sini. Karena ini adalah aplikasi desktop, Anda perlu memberikan beberapa informasi tambahan untuk meluncurkan program sehingga Anda dapat melihatnya di komputer Linux Anda.
Untuk menemukan nilai variabel
DISPLAY
lingkungan di komputer Linux Anda, jalankan perintah ini:echo $DISPLAY
Dalam konfigurasi untuk AppBasicExampleGui, ada array parameter, "pipeArgs". Ini berisi baris: "${debuggerCommand}". Ini adalah perintah yang diluncurkan
gdb
pada komputer jarak jauh. Visual Studio harus mengekspor tampilan ke dalam konteks ini sebelum perintah tersebut berjalan. Misalnya, jika nilai tampilan Anda adalah:1
, ubah baris tersebut sebagai berikut:"export DISPLAY=:1;${debuggerCommand}",
Luncurkan dan debug aplikasi Anda. Buka menu drop-down Pilih Item Startup di toolbar dan pilih AppBasicExampleGui. Selanjutnya, pilih ikon putar hijau di toolbar, atau tekan F5. Aplikasi dan dependensinya dibangun pada komputer Linux jarak jauh, lalu diluncurkan dengan debugger Visual Studio yang terpasang. Di komputer Linux jarak jauh, Anda akan melihat jendela aplikasi muncul.
Pindahkan mouse Anda ke jendela aplikasi, dan klik tombol. Titik hentinya tertembak. Jeda eksekusi program, Visual Studio kembali ke latar depan, dan Anda melihat titik henti Anda. Anda juga akan melihat Jendela Konsol Linux muncul di Visual Studio. Jendela menyediakan output dari komputer Linux jarak jauh, dan juga dapat menerima input untuk
stdin
. Seperti jendela Visual Studio apa pun, Anda dapat menambungkannya di mana Anda lebih suka melihatnya. Posisinya dipertahankan dalam sesi mendatang.Output di jendela menunjukkan bahwa fungsi C11 dimuat secara dinamis menggunakan dlopen/dlsym OK, konteks GL 3.0 telah dibuat dan konteks penyajian GLX Langsung yang diperoleh dan dibuat saat ini. Jendela memiliki berbagai informasi versi untuk GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION, dan sebagainya.
Anda dapat memeriksa variabel aplikasi, objek, utas, memori, dan menelusuri kode Anda secara interaktif menggunakan Visual Studio. Tetapi kali ini, Anda melakukan semuanya pada komputer Linux jarak jauh alih-alih lingkungan Windows lokal Anda. Anda dapat memilih Lanjutkan untuk membiarkan aplikasi dilanjutkan dan keluar secara normal, atau Anda dapat memilih tombol berhenti, seperti halnya eksekusi lokal.
Lihat jendela Call Stack dan lihat Panggilan ke
x11OpenGLWindow
karena Visual Studio meluncurkan aplikasi di Linux.Callstack menunjukkan titik henti pada CommonRigidBodyBase::mouseMoveCallback, dan panggilan yang mendahuluinya seperti OnMouseMove, X11OpenGLWindow::p umpMessage, dan sebagainya.
Apa yang Anda pelajari
Dalam tutorial ini, Anda mengkloning basis kode langsung dari GitHub. Anda membangun, menjalankan, dan men-debugnya di Windows tanpa modifikasi. Kemudian Anda menggunakan basis kode yang sama, dengan perubahan konfigurasi kecil, untuk membangun, menjalankan, dan men-debug pada komputer Linux jarak jauh.
Langkah berikutnya
Pelajari selengkapnya tentang mengonfigurasi dan men-debug proyek CMake di Visual Studio:
Proyek CMake di Visual Studio
Mengonfigurasi proyek CMake Linux
Menyambungkan ke komputer Linux jarak jauh Anda
Menyesuaikan pengaturan build CMake
Mengonfigurasi sesi penelusuran kesalahan CMake
Menyebarkan, menjalankan, dan men-debug proyek Linux Anda
Referensikonfigurasi CMake yang telah ditentukan sebelumnya vcpkg dalam proyekCMake Menginstal dan menggunakan paket dengan CMake di Visual Studio