Öğretici: Visual Studio'da C++ platformlar arası projeler oluşturma

Visual Studio C ve C++ geliştirmesi artık yalnızca Windows için değil. Bu öğreticide, Windows ve Linux'ta C++ platformlar arası geliştirme için Visual Studio'yu nasıl kullanacağınız gösterilmektedir. CMake'yi temel aldığından Visual Studio projeleri oluşturmanız veya oluşturmanız gerekmez. CMakeLists.txt dosyası içeren bir klasörü açtığınızda, Visual Studio IntelliSense ve derleme ayarlarını otomatik olarak yapılandırıyor. Windows'da kodunuzu yerel olarak düzenlemeye, oluşturmaya ve hata ayıklamaya hızla başlayabilirsiniz. Ardından, yapılandırmanızı Linux'ta da aynı işlemi yapacak şekilde değiştirin ve bunların tümünü Visual Studio'dan gerçekleştirin.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • GitHub'dan açık kaynak CMake projesi kopyalama
  • projeyi Visual Studio'da açma
  • Windows'ta yürütülebilir hedef oluşturma ve hata ayıklama
  • Linux makinesine bağlantı ekleme
  • Linux'ta aynı hedefi oluşturma ve hatalarını ayıklama

Önkoşullar

  • Platformlar Arası C++ Geliştirme için Visual Studio'yu ayarlama

    • İlk olarak Visual Studio'yu yükleyin ve C++ ile Masaüstü geliştirme ve C++ iş yükleriyle Linux geliştirme'yi seçin. Bu minimum yükleme yalnızca 3 GB'tır. İndirme hızınıza bağlı olarak yükleme 10 dakikadan uzun sürmemelidir.
  • Platformlar Arası C++ Geliştirme için Linux makinesi ayarlama

    • Visual Studio belirli bir Linux dağıtımı gerektirmez. İşletim sistemi fiziksel bir makinede, VM'de veya bulutta çalışıyor olabilir. Linux için Windows Alt Sistemi (WSL) de kullanabilirsiniz. Ancak bu öğretici için grafik ortam gereklidir. WSL burada önerilmez, çünkü öncelikle komut satırı işlemleri için tasarlanmıştır.

    • Visual Studio, Linux makinesinde şu araçları gerektirir: C++ derleyicileri, gdb, ssh, rsync, makeve zip. Debian tabanlı sistemlerde şu bağımlılıkları yüklemek için bu komutu kullanabilirsiniz:

      sudo apt install -y openssh-server build-essential gdb rsync make zip
      
    • Visual Studio, Linux makinesinde sunucu modunun etkin olduğu son bir CMake sürümü gerektirir (en az 3.8). Microsoft, herhangi bir Linux dağıtımına yükleyebileceğiniz evrensel bir CMake derlemesi oluşturur. En son özelliklere sahip olduğunuzdan emin olmak için bu derlemeyi kullanmanızı öneririz. CMake ikili dosyalarını GitHub'da CMake deposunun Microsoft çatalından alabilirsiniz. Bu sayfaya gidin ve Linux makinenizdeki sistem mimarisiyle eşleşen sürümü indirin ve yürütülebilir dosya olarak işaretleyin:

      wget <path to binary>
      chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
      
    • betiği ile --helpçalıştırma seçeneklerini görebilirsiniz. /usr/bin, Visual Studio'da CMake'nin arandığı varsayılan konum olduğundan /usr yolunda yüklemeyi belirtme seçeneğini kullanmanızı -prefix öneririz. Aşağıdaki örnekte Linux-x86_64 betiği gösterilmektedir. Farklı bir hedef platform kullanıyorsanız gerektiği gibi değiştirin.

      sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
      
  • Windows makinenizde yüklü pencereler için Git.

  • Bir GitHub hesabı.

GitHub'dan açık kaynak CMake projesi kopyalama

Bu öğreticide GitHub'da Bullet Physics SDK'sı kullanılır. Birçok uygulama için çarpışma algılama ve fizik simülasyonları sağlar. SDK, başka kod yazmak zorunda kalmadan derlenen ve çalışan örnek yürütülebilir programlar içerir. Bu öğretici, kaynak kodun veya derleme betiklerinin hiçbirini değiştirmez. Başlamak için, Visual Studio'yu yüklediğiniz makinede GitHub'dan bullet3 deposunu kopyalayın.

git clone https://github.com/bulletphysics/bullet3.git
  1. Visual Studio ana menüsünde Dosya > Aç > CMake'i seçin. CMakeLists.txt İndirdiğiniz bullet3 deposunun kökündeki dosyaya gidin.

    Screenshot of Visual Studio menu showing File > Open > C Make. A folder has yet to be opened. This is just the menu opened to this point.

    Klasörü açar açmaz, klasör yapınız Çözüm Gezgini görünür hale gelir.

    Screenshot of the Solution Explorer window in Folder View mode. It displays the contents of the project (files and folders) and CMakeLists.txt is highlighted.

    Bu görünüm size mantıksal veya filtrelenmiş bir görünüm değil, diskte tam olarak ne olduğunu gösterir. Varsayılan olarak gizli dosyaları göstermez.

  2. Klasördeki tüm dosyaları görmek için Tüm dosyaları göster düğmesini seçin.

    Screenshot of the Solution Explorer window with the Show All Files button highlighted. This button sits on top of the solution explorer window and to the right.

Hedefler görünümüne geçme

CMake kullanan bir klasörü açtığınızda, Visual Studio otomatik olarak CMake önbelleğini oluşturur. Bu işlem, projenizin boyutuna bağlı olarak birkaç dakika sürebilir.

  1. Çıktı Penceresinde, Çıktıyı göster'i seçin ve ardından önbellek oluşturma işleminin durumunu izlemek için CMake'yi seçin. İşlem tamamlandığında "Hedef bilgi ayıklama işlemi tamamlandı" ifadesi yer alır.

    Screenshot of the Output window. The Show output from: dropdown is set to CMake.

    Bu işlem tamamlandıktan sonra IntelliSense yapılandırılır. Projeyi derleyebilir ve uygulamada hata ayıklayabilirsiniz. Visual Studio artık CMakeLists dosyalarında belirtilen hedefleri temel alarak çözümün mantıksal bir görünümünü gösterir.

  2. CMake Hedefleri Görünümü'ne geçmek için Çözüm Gezgini Çözümler ve Klasörler düğmesini kullanın.

    Screenshot of the Solutions and Folders button in the Solution Explorer. It is selected, showing a dropdown with a choice for c:\projects\bullet3 and another choice for CMake Targets View, which is selected.

    Madde İşareti SDK'sı için bu görünüm şöyle görünür:

    Screenshot of the Solution Explorer CMake targets view. It contains an entry called BULLET_PHYSICS Project, under which are entries like App_BasicExample (executable), App_ExampleBrowser (executable), and so on.

    Hedefler görünümü, bu kaynak temeldekilerin daha sezgisel bir görünümünü sağlar. Bazı hedeflerin kitaplık, bazılarının ise yürütülebilir dosya olduğunu görebilirsiniz.

  3. CMake Hedefleri Görünümü'nde bir düğümü genişleterek kaynak kod dosyalarını, bu dosyaların diskte bulunabileceği her yerde görebilirsiniz.

Açık bir Windows x64-Debug yapılandırması ekleme

Visual Studio, Windows için varsayılan bir x64-Debug yapılandırması oluşturur. Yapılandırmalar, Visual Studio'nun CMake için hangi platform hedeflerini kullanacağını anlama şeklidir. Varsayılan yapılandırma diskte temsil değildir. Açıkça bir yapılandırma eklediğinizde, Visual Studio CMake Ayarlar.json adlı bir dosya oluşturur. Belirttiğiniz tüm yapılandırmalar için ayarlarla doldurulur.

  1. Yeni bir yapılandırma ekleyin. Araç çubuğunda Yapılandırma açılan listesini açın ve Yapılandırmaları Yönet'i seçin.

    Screenshot of the Configuration drop-down in the toolbar. Manage Configurations... is selected.

    CMake Ayarlar Düzenleyicisi açılır. Yeni bir yapılandırma eklemek için düzenleyicinin sol tarafındaki yeşil artı işaretini seçin. CMake'ye Yapılandırma Ekle Ayarlar iletişim kutusu görüntülenir:

    Screenshot of the Add Configuration to CMakeSettings dialog. It has entries such as Linux-Debug, x86-Debug. x64-Debug is selected.

    Bu iletişim kutusu, Visual Studio'ya dahil edilen tüm yapılandırmaların yanı sıra oluşturduğunuz tüm özel yapılandırmaları gösterir. Eklediğiniz ilk yapılandırma olması gereken bir x64-Debug yapılandırması kullanmaya devam etmek istiyorsanız. x64-Hata Ayıkla'yı ve ardından Seç düğmesini seçin. Visual Studio, x64-Debug yapılandırmasıyla CMake Ayarlar.json dosyasını oluşturur ve diske kaydeder. Ad parametresini doğrudan CMake Ayarlar.json dosyasında değiştirerek yapılandırmalarınız için istediğiniz adları kullanabilirsiniz.

Windows'ta kesme noktası ayarlama, derleme ve çalıştırma

Bu adımda, Madde İşareti Fiziği kitaplığını gösteren örnek bir programda hata ayıklayacağız.

  1. Çözüm Gezgini AppBasicExampleGui'yi seçin ve genişletin.

  2. BasicExample.cpp dosyasını açın.

  3. Çalışan uygulamaya tıkladığınızda isabet alan bir kesme noktası ayarlayın. Tıklama olayı bir yardımcı sınıfı içindeki bir yöntemde işlenir. Hızlı bir şekilde oraya ulaşmak için:

    1. Yapının BasicExample türetildiğini seçinCommonRigidBodyBase. 30. hat civarında.

    2. Sağ tıklayın ve Tanıma Git'i seçin. Artık CommonRigidBodyBase.h üst bilgisindesiniz.

    3. Kaynağınızın üzerindeki tarayıcı görünümünde içinde olduğunuzu CommonRigidBodyBasegörmeniz gerekir. Sağ tarafta inceleyecek üyeleri seçebilirsiniz. Açılan listeyi açın ve üst bilgide bu işlevin tanımına gitmek için öğesini seçin mouseButtonCallback .

      Screenshot of the Member list toolbar drop-down in the editor window. It list functions such as getRayTo(in x, int y). The mouse button callback method is highlighted.

  4. Bu işlevin içindeki ilk satıra bir kesme noktası yerleştirin. Uygulama penceresindeki bir fare düğmesine tıkladığınızda, Visual Studio hata ayıklayıcısı altında çalıştırıldığında bu tuşa basılır.

  5. Uygulamayı başlatmak için araç çubuğundaki başlat açılan listesini seçin. "Başlangıç Öğesini Seç" yazan yeşil oynatma simgesine sahip olandır. Açılan listede AppBasicExampleGui.exe'yi seçin. Yürütülebilir ad artık başlat düğmesinde görüntülenir:

    Screenshot of the Visual Studio toolbar launch drop-down. AppBasicExampleGui.exe is selected, but other options are visible such as App_ExampleBrowser.exe, App_HelloWorld.exe, and others.

  6. Uygulamayı ve gerekli bağımlılıkları oluşturmak için başlat düğmesini seçin, ardından Visual Studio hata ayıklayıcısı ekli olarak başlatın. Birkaç dakika sonra çalışan uygulama görüntülenir:

    Screenshot of the running application. It's a collection of colored blocks on a yellow plane.

  7. Farenizi uygulama penceresine taşıyın ve kesme noktasını tetikleyen bir düğmeye tıklayın. Kesme noktası Visual Studio'yu ön plana geri getirir ve düzenleyici yürütmenin duraklatıldığı satırı gösterir. Uygulama değişkenlerini, nesneleri, iş parçacıklarını ve belleği inceleyebilir veya kodunuzda etkileşimli olarak adım adım ilerleyebilirsiniz. Uygulamanın sürdürülmesine izin vermek için Devam'ı seçin ve ardından normal şekilde çıkın. Alternatif olarak, durdur düğmesini kullanarak Visual Studio'da yürütmeyi durdurabilirsiniz.

Linux yapılandırması ekleme ve uzak makineye bağlanma

  1. Linux yapılandırması ekleyin. Çözüm Gezgini görünümünde CMake Ayarlar.json dosyasına sağ tıklayın ve Yapılandırma Ekle'yi seçin. CMake'ye Yapılandırma Ekle Ayarlar iletişim kutusunu daha önce gördüğünüz gibi görürsünüz. Bu kez Linux-Debug'ı seçin, ardından CMake Ayarlar.json dosyasını (ctrl + s) kaydedin.

  2. Visual Studio 2019 sürüm 16.6 veya üzeri CMake Ayarlar Düzenleyicisi'nin altına kadar aşağı kaydırın ve Gelişmiş ayarları göster'i seçin. CMake oluşturucu olarak Unix Makefiles'ı seçin, ardından CMake Ayarlar.json dosyasını (ctrl + s) kaydedin.

  3. Yapılandırma açılan listesinde Linux-Debug'ı seçin.

    Screenshot of the launch configuration drop-down. The visible options are: x64-Debug, Linux-Debug, and Manage Configurations.

    Bir Linux sistemine ilk kez bağlanıyorsanız Uzak Sisteme Bağlan iletişim kutusu görüntülenir.

    Screenshot of the Visual Studio Connect to Remote System dialog.

    İletişim kutusunda konak adı, bağlantı noktası, kullanıcı adı, kimlik doğrulama türü ve parola alanları vardır. Bağlantı noktası 22 ve Kimlik doğrulama türü Parola olarak ayarlanmış dışında tüm alanlar boş.

    Zaten bir uzak bağlantı eklediyseniz, Araçlar > Seçenekler Platformlar > Arası Bağlantı Yöneticisi'ne giderek bu > pencereyi açabilirsiniz.

  4. Linux makinenize bağlantı bilgilerini sağlayın ve Bağlan seçin. Visual Studio bu makineyi CMake Ayarlar.json dosyasına Linux-Debug için varsayılan bağlantınız olarak ekler. Ayrıca uzak makinenizdeki üst bilgileri de çeker, böylece bu uzak bağlantıya özgü IntelliSense'i elde edersiniz. Ardından, Visual Studio dosyalarınızı uzak makineye gönderir ve uzak sistemde CMake önbelleğini oluşturur. Bu adımlar, ağınızın hızına ve uzak makinenizin gücüne bağlı olarak biraz zaman alabilir. CMake çıkış penceresinde "Hedef bilgi ayıklama tamamlandı" iletisi görüntülendiğinde işlemin tamam olduğunu biliyorsunuz.

Linux'ta kesme noktası ayarlama, derleme ve çalıştırma

Bu bir masaüstü uygulaması olduğundan, hata ayıklama yapılandırmasına bazı yapılandırma bilgileri sağlamanız gerekir.

  1. CMake Hedefleri görünümünde AppBasicExampleGui'ye sağ tıklayın ve Hata Ayıkla ve Başlat Ayarlar'ı seçerek gizli .vs alt klasöründeki launch.vs.json dosyasını açın. Bu dosya geliştirme ortamınızda yereldir. Projeyi iade etmek ve ekibinizle birlikte kaydetmek isterseniz projenizin köküne taşıyabilirsiniz. Bu dosyada AppBasicExampleGui için bir yapılandırma eklenmiştir. Bu varsayılan ayarlar çoğu durumda çalışır ancak burada çalışmaz. Bu bir masaüstü uygulaması olduğundan, linux makinenizde görebilmeniz için programı başlatmak için bazı ek bilgiler sağlamanız gerekir.

  2. Linux makinenizde ortam değişkeninin DISPLAY değerini bulmak için şu komutu çalıştırın:

    echo $DISPLAY
    

    AppBasicExampleGui yapılandırmasında "pipeArgs" adlı bir parametre dizisi vardır. Şu satırı içerir: "${debuggerCommand}". Uzak makinede başlatılan gdb komut. Visual Studio, bu komut çalışmadan önce görüntüyü bu bağlama aktarmalıdır. Örneğin, görüntünüzün değeri ise :1, bu satırı aşağıdaki gibi değiştirin:

    "export DISPLAY=:1;${debuggerCommand}",
    
  3. Uygulamanızı başlatın ve hatalarını ayıklayın. Araç çubuğunda Başlangıç Öğesi Seç açılan listesini açın ve AppBasicExampleGui'yi seçin. Ardından, araç çubuğundaki yeşil oynatma simgesini seçin veya F5 tuşuna basın. Uygulama ve bağımlılıkları uzak Linux makinesinde oluşturulur, ardından Visual Studio hata ayıklayıcısı ekli olarak başlatılır. Uzak Linux makinenizde bir uygulama penceresi görmeniz gerekir.

  4. Farenizi uygulama penceresine taşıyın ve bir düğmeye tıklayın. Kesme noktasına isabet edilir. Program yürütme duraklatılır, Visual Studio ön plana döner ve kesme noktanızı görürsünüz. Visual Studio'da bir Linux Konsol Penceresi de görmeniz gerekir. Pencere uzak Linux makinesinden çıkış sağlar ve için stdingirişi de kabul edebilir. Herhangi bir Visual Studio penceresi gibi, görmeyi tercih ettiğiniz yere yerleştirebilirsiniz. Konumu gelecekteki oturumlarda kalıcı hale gelecek.

    Screenshot of the Visual Studio Linux Console Window.

    Penceredeki çıkış, C11 işlevlerinin dlopen/dlsym kullanılarak dinamik olarak yüklendiğini, bir GL 3.0 bağlamı oluşturulduğunu ve Doğrudan GLX işleme bağlamı alınıp güncel hale getirildiğini gösterir. Pencerede GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION vb. için çeşitli sürüm bilgileri bulunur.

  5. Visual Studio kullanarak uygulama değişkenlerini, nesneleri, iş parçacıklarını, belleği inceleyebilir ve kodunuzda etkileşimli olarak ilerleyebilirsiniz. Ancak bu kez, bunların tümünü yerel Windows ortamınız yerine uzak bir Linux makinesinde yapacaksınız. Uygulamanın normal şekilde sürdürülmesine ve çıkışına izin vermek için Devam'ı seçebilir veya yerel yürütmede olduğu gibi durdur düğmesini seçebilirsiniz.

  6. Visual Studio uygulamayı Linux'ta başlattığından beri Çağrı Yığını penceresine x11OpenGLWindow bakın ve çağrıları görüntüleyin.

    The Visual Studio Call Stack window, showing Linux call stack.

    Çağrı yığını CommonRigidBodyBase::mouseMoveCallback üzerindeki kesme noktasını ve ondan önceki çağrıları gösterir; örneğin, OnMouseMove, X11OpenGLWindow::p umpMessage vb.

Öğrendikleriniz

Bu öğreticide, doğrudan GitHub'dan bir kod tabanı kopyalamıştınız. Windows'ta değişiklik yapmadan derlediğiniz, çalıştırdığınız ve hata ayıkladığınız. Ardından, uzak bir Linux makinesinde derlemek, çalıştırmak ve hata ayıklamak için küçük yapılandırma değişiklikleriyle aynı kod tabanını kullandınız.

Sonraki adımlar

Visual Studio'da CMake projelerini yapılandırma ve hata ayıklama hakkında daha fazla bilgi edinin: