Aracılığıyla paylaş


Öğ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'ni (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. -prefix/bin, Visual Studio'da CMake'nin arandığı varsayılan konum olduğundan /usr yolunda yüklemeyi belirtme seçeneğini kullanmanızı ö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.

  • 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.

    Dosya > Aç > C Make'i gösteren Visual Studio menüsünün ekran görüntüsü. Henüz bir klasör açılmadı. Bu yalnızca bu noktaya kadar açılan menüdür.

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

    Klasör Görünümü modunda Çözüm Gezgini penceresinin ekran görüntüsü. Projenin içeriğini (dosyalar ve klasörler) görüntüler ve CMakeLists.txt vurgulanır.

    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.

    Tüm Dosyaları Göster düğmesinin vurgulandığı Çözüm Gezgini penceresinin ekran görüntüsü. Bu düğme, çözüm gezgini penceresinin üst kısmında ve sağda yer alır.

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.

    Çıkış penceresinin ekran görüntüsü. Çıkış göster: açılan listesi CMake olarak ayarlanır.

    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'ndeki Çözümlerve Klasörler düğmesini kullanın.

    Çözüm Gezgini'ndeki Çözümler ve Klasörler düğmesinin ekran görüntüsü. Seçili, c:\projects\bullet3 seçeneğinin bulunduğu bir açılan menü ve seçilen CMake Hedefleri Görünümü için başka bir seçenek gösterilir.

    Bullet SDK için bu görünüm şöyle:

    Çözüm Gezgini CMake hedefleri görünümünün ekran görüntüsü. App_BasicExample (yürütülebilir), App_ExampleBrowser (yürütülebilir) vb. gibi girdilerin bulunduğu BULLET_PHYSICS Project adlı bir girdi içerir.

    Hedefler görünümü, bu kaynaktaki öğelerin daha sezgisel bir görünümünü sunar. 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 CMakeSettings.jsonadlı 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.

    Araç çubuğundaki Yapılandırma açılır listesinin ekran görüntüsü. Yapılandırmaları Yönet... seçili.

    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. CMakeSettings'e Yapılandırma Ekle iletişim kutusu görüntülenir:

    CMakeSettings'e Yapılandırma Ekle iletişim kutusunun ekran görüntüsü. Linux-Debug, x86-Debug gibi girdileri vardır. x64-Debug seçili.

    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 CMakeSettings.json dosyasını oluşturur ve diske kaydeder. Ad parametresini doğrudan CMakeSettings.jsoniçinde 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'nde AppBasicExampleGui öğesini seçin ve genişletin.

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

  3. Çalışan uygulamaya tıkladığınızda tetiklenen 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 CommonRigidBodyBase türetildiğini seçinBasicExample. 30. hat civarında.

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

    3. Kaynağınızın üzerindeki tarayıcı görünümünde CommonRigidBodyBase içinde olduğunuzu görmelisiniz. Sağ tarafta inceleyecek üyeleri seçebilirsiniz. Açılır listeyi açın ve başlıktaki bu işlevin tanımına gitmek için mouseButtonCallback seçeneğini seçin.

      Düzenleyici penceresinde Üye listesi araç çubuğu açılan listesinin ekran görüntüsü. getRayTo(x, int y) gibi fonksiyonları listeler. Fare düğmesi geri çağırma metodu vurgulanır.

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

  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 listeden AppBasicExampleGui.exeöğesini seçin. Yürütülebilir ad artık başlat düğmesinde görüntülenir:

    Visual Studio araç çubuğu başlatma açılan listesinin ekran görüntüsü. AppBasicExampleGui.exe seçilmiş, ancak App_ExampleBrowser.exe, App_HelloWorld.exeve diğer seçenekler de görülmektedir.

  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:

    Çalışan uygulamanın ekran görüntüsü. Sarı düzlemdeki renkli bloklardan oluşan bir koleksiyon.

  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. Bir Linux yapılandırması ekleyin. Çözüm Gezgini görünümünde CMakeSettings.json dosyasına sağ tıklayın ve Yapılandırma Ekle'yi seçin. CMakeSettings'e Yapılandırma Ekle iletişim kutusunu daha önce gördüğünüz gibi görürsünüz. Bu kez Linux-Debug'ı seçin, ardından CMakeSettings.json dosyasını (ctrl + s) kaydedin.

  2. Visual Studio 2019 sürüm 16.6 veya üzeri CMake Ayarlar Düzenleyicisi'nin en 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 CMakeSettings.json dosyasını (ctrl + s) kaydedin.

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

    Çalışma yapılandırması açılır listesinin ekran görüntüsü. Görünür seçenekler şunlardır: x64-Debug, Linux-Debug ve Yapılandırmaları Yönet.

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

    Visual Studio Uzak Sisteme Bağlan iletişim kutusunun ekran görüntüsü.

    İ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 Linux-Debug için varsayılan bağlantınız olarak CMakeSettings.json olarak ekler. Ayrıca uzak makinenizdeki headerları da çeker, böylece bu uzak bağlantıya özel 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 öğesine sağ tıklayın ve Hata Ayıkla ve Başlat Ayarları'nı seçerek gizli .vs alt klasöründeki launch.vs.json dosyasını açın. Bu dosya geliştirme ortamınızda yereldir. Projeyi ekibinizle paylaşmak ve kaydetmek isterseniz, dosyayı projenizin kök dizinine 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 gdb başlatan komut bu. 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. Uzak Linux makinesinden çıkış sağlayan pencere, stdin için de girdi kabul edebilir. Herhangi bir Visual Studio penceresi gibi, görmeyi tercih ettiğiniz yere yerleştirebilirsiniz. Konumu gelecekteki oturumlarda kalıcı hale gelecek.

    Visual Studio Linux Konsol Penceresinin ekran görüntüsü.

    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 bakın ve x11OpenGLWindow'e yapılan çağrıları görüntüleyin.

    Linux çağrı yığınını gösteren Visual Studio Çağrı Yığını penceresi.

    Çağrı yığını, CommonRigidBodyBase::mouseMoveCallback üzerindeki kesme noktasını ve ondan önceki çağrıları gösterir; örneğin OnMouseMove, X11OpenGLWindow::pumpMessage 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: