{"id":3107,"date":"2026-03-28T20:03:22","date_gmt":"2026-03-28T20:03:22","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=3107"},"modified":"2026-03-28T20:03:22","modified_gmt":"2026-03-28T20:03:22","slug":"arac-sdl3-ve-conan","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/","title":{"rendered":"[Ara\u00e7] SDL3 ve Conan"},"content":{"rendered":"<p>Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m uzun bir aradan sonra tekrar bir araday\u0131z ve son kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz.<br \/>\nNerede kalm\u0131\u015ft\u0131k peki \ud83d\ude42 \u00d6ncelikle, C++ ile SDL3 geli\u015ftirmeye y\u00f6nelik haz\u0131rlam\u0131\u015f oldu\u011fumuz cpp-playground reposunda, SDL3 tabanl\u0131 uygulamam\u0131z\u0131<br \/>\nCMake kullanarak hem windows hem de linux&#8217;te nas\u0131l derleyebilece\u011fimize bakm\u0131\u015ft\u0131k. Detaylar i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ya g\u00f6z atabilirsiniz:<\/p>\n<p><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2025\/08\/23\/arac-sdl3-ci-cd\/\">[ARA\u00c7] SDL3 CI\/CD<\/a><\/strong><\/span><\/p>\n<p>Bunu yaparken de, SDL k\u00fct\u00fcphanelerini tek tek indirip, olu\u015fturmaya ili\u015fkin ad\u0131mlar\u0131 ve betikleri eklemi\u015ftik.<br \/>\nBunlar, hem zaman al\u0131c\u0131 hem de her seferinde yapmak \u00e7ok zor oluyordu.<br \/>\nArt\u0131k bunu da Conan 2&#8217;ye ge\u00e7irmenin vakti geldi. Bu yaz\u0131m\u0131zda, bu ge\u00e7i\u015fe bak\u0131yor olaca\u011f\u0131z. Conan 2&#8217;ye y\u00f6nelik hususlar i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ma g\u00f6z atabilirsiniz:<\/p>\n<p><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2025\/11\/02\/arac-conan-2-0-c-paket-yonetim-araci\/\">[ARA\u00c7] Conan 2.0 &#8211; C++ Paket Y\u00f6netim Arac\u0131<\/a><\/strong><\/span><\/p>\n<p>Conan 2&#8217;yi, uygulamalarda kullanmak olduk\u00e7a kolay. Burada &#8220;conanfile.txt&#8221; haz\u0131rlay\u0131p, daha sonra ilgili toolchain dosyalar\u0131n\u0131 CMake preset dosyalar\u0131 i\u00e7erisine eklemeniz yeterli. \u015eimdi s\u0131rayla neler yapt\u0131\u011f\u0131m\u0131za g\u00f6z atal\u0131m.<\/p>\n<p>\u0130lk olarak, conanfile.txt&#8217;yi olu\u015fturduk. Bu dosya temelde, uygulaman\u0131n hangi paketlere ve s\u00fcr\u00fcmlerine ihtiyac\u0131 oldu\u011funu s\u00f6yl\u00fcyor:<\/p>\n<pre class=\"lang:yaml decode:true \">[requires]\r\nsdl\/3.4.0\r\nsdl_image\/3.4.0\r\nsdl_ttf\/3.2.2\r\ngtest\/1.16.0\r\n\r\n[generators]\r\nCMakeDeps\r\nCMakeToolchain<\/pre>\n<p>Burada, tavsiye edilen genelde ilgili s\u00fcr\u00fcm\u00fc direk girmek, (\u00f6r. 3.4.0) bunula birlikte aral\u0131k da tan\u0131mlaman\u0131z m\u00fcmk\u00fcn. Yukar\u0131daki sat\u0131rlar\u0131 girdikten sonra a\u015fa\u011f\u0131daki komut ile ilgili paketleri yerel makinemize indiriyoruz. Conan&#8217;da yaz\u0131l\u0131m olu\u015fturma ilgili ayarlar\u0131 hizalamak i\u00e7in profiller kullan\u0131lmakta. Bu uygulama i\u00e7in \u00f6zel bir profil haz\u0131rlamasak da, daha profesyonel ya da tak\u0131m i\u00e7eren durumlar i\u00e7in kendi profillerinizi olu\u015fturman\u0131zda fayda var. Sonraki yaz\u0131lar\u0131mda, profil konusuna da detayl\u0131 e\u011filece\u011fim. \u015eimdilik a\u015fa\u011f\u0131daki komut ile halihaz\u0131rdaki derleme arac\u0131n\u0131 kullan\u0131yor olaca\u011f\u0131z.<\/p>\n<pre class=\"lang:zsh decode:true\">conan profile detect --force<\/pre>\n<p>Tabi bu komutu \u00e7a\u011f\u0131rmadan \u00f6nce, gerekli derleyicilerin, komut sat\u0131r\u0131ndan eri\u015febilir oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. Windows i\u00e7in MSVC geli\u015ftirici komut sat\u0131r\u0131n\u0131, linux i\u00e7in ise yine benzer \u015fekilde g++\/clang++&#8217;\u0131 kurmu\u015f ve c++ i\u00e7in ilgili derleyiciyi ayarlam\u0131\u015f olman\u0131z laz\u0131m. Buna y\u00f6nelik\u00a0<span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2022\/03\/13\/ipucu-varsayilan-derleyici-degistirme\/\">\u0130pucu Varsay\u0131lan Derleyici De\u011fi\u015ftirme<\/a> <\/strong><\/span>yaz\u0131ma g\u00f6z atabilirsiniz.<\/p>\n<p>Bu komut ile art\u0131k, conan&#8217;\u0131n varsay\u0131lan dizini alt\u0131nda (C:\\Users\\yazilimperver-dev\\.conan2\\profiles) default isimli bir dosya olu\u015fmu\u015f olacak. Benim i\u00e7in i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi:<\/p>\n<pre class=\"lang:yaml decode:true \">[settings]\r\narch=x86_64\r\nbuild_type=Release\r\ncompiler=msvc\r\ncompiler.cppstd=14\r\ncompiler.runtime=dynamic\r\ncompiler.version=194\r\nos=Windows<\/pre>\n<p>Profilimize da bakt\u0131ktan sonra, art\u0131k bu profil ile uyumlu ba\u011f\u0131ml\u0131l\u0131klar\u0131 indirebiliriz. Bu noktada Conan, conancenter&#8217;a bak\u0131yor olacak ve bizim profil ile birebir uyumlu bir binary haz\u0131r var ise direk onu indirecek, yok ise yerel makinemizde bunu build ediyor olacak (profil ile ilgili yaz\u0131mdan sonra burada haz\u0131rlayaca\u011f\u0131m\u0131z profiller ile tekrar tekrar build ettirmeden de kullan\u0131labilecek bir noktaya gelece\u011fiz).<\/p>\n<pre class=\"lang:zsh decode:true \">conan install . --output-folder=build --build=missing -s build_type=Debug<\/pre>\n<p>Bu komutu \u00e7a\u011f\u0131rd\u0131ktan sonra, conan, cmake i\u00e7in gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 (CMakeDeps) ve derleyici ayarlar\u0131n\u0131 (CMakeToolchain) kullabilmemiz i\u00e7in, bir toolchain dosyas\u0131n\u0131 (conan_toolchain.cmake) build dizini alt\u0131na olu\u015fturur. Daha sonra bu dosyay\u0131, CMake presetleri i\u00e7erisine a\u015fa\u011f\u0131daki gibi ekliyoruz:<\/p>\n<pre class=\"lang:js decode:true \">    \"configurePresets\": [\r\n        {\r\n            \"name\": \"base\",\r\n            \"hidden\": true,\r\n            \"displayName\": \"base Configuration\",\r\n            \"description\": \"Default build using Ninja generator\",\r\n            \"generator\": \"Ninja\",\r\n            \"binaryDir\": \"${sourceDir}\/build\/${presetName}\",\r\n            \"installDir\": \"${sourceDir}\/install\/${presetName}\",\r\n            \"cacheVariables\": {\r\n                \"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\",\r\n                \"BUILD_SHARED_LIBS\": \"FALSE\",\r\n                \"CMAKE_TOOLCHAIN_FILE\": \"${sourceDir}\/build\/conan_toolchain.cmake\",\r\n                \"CMAKE_POLICY_DEFAULT_CMP0091\": \"NEW\"\r\n            }\r\n        },\r\n        {\r\n            \"name\": \"base-msvc\",\r\n            \"hidden\": true,\r\n            \"displayName\": \"Visual Studio Base Configuration\",\r\n            \"description\": \"Default build using Visual Studio generator\",\r\n            \"generator\": \"Visual Studio 17 2022\",\r\n            \"binaryDir\": \"${sourceDir}\/build\/${presetName}\",\r\n            \"installDir\": \"${sourceDir}\/install\/${presetName}\",\r\n            \"cacheVariables\": {\r\n                \"CMAKE_EXPORT_COMPILE_COMMANDS\": \"ON\",\r\n                \"BUILD_SHARED_LIBS\": \"FALSE\",\r\n                \"CMAKE_TOOLCHAIN_FILE\": \"${sourceDir}\/build\/conan_toolchain.cmake\",\r\n                \"CMAKE_POLICY_DEFAULT_CMP0091\": \"NEW\"\r\n            }\r\n        },<\/pre>\n<p>bu ad\u0131mdan sonra, bu presetleri miras alacak presetler de, bu toolchain dosyas\u0131n\u0131 kullan\u0131yor olacaklar.<\/p>\n<p>Install i\u015flemi biraz s\u00fcrebilir. Burada b\u00fct\u00fcn k\u00fct\u00fcphaneleri ve ilgili ba\u011f\u0131ml\u0131l\u0131klar\u0131 indiriyor olacak (SDL3 de olduk\u00e7a b\u00fcy\u00fck \ud83d\ude42 )<\/p>\n<p>Yerel makinenizde bunu bir kere yapt\u0131ktan sonra, art\u0131k her seferinde bunu tekrar tekrar olu\u015fturmaya ihtiya\u00e7 kalmayacak.<\/p>\n<p>Bu i\u015flemler de bittikten sonra art\u0131k cmake konfig\u00fcrasyon ve build ad\u0131mlar\u0131na ge\u00e7ebiliriz. Bunlar i\u00e7in ise a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7a\u011f\u0131rman\u0131z yeterli (Release build&#8217;ler i\u00e7in de debug&#8217;lar\u0131 release ile de\u011fi\u015ftirmeniz yeterli):<\/p>\n<pre class=\"lang:zsh decode:true \">cmake --preset debug-msvc\r\ncmake --build --preset build-debug-msvc\r\n\r\n# Linux i\u00e7in de a\u015fa\u011f\u0131daki presetleri kullanabilirsiniz:\r\nbuild-debug-gcc, build-debug-clang<\/pre>\n<p>Evet, bu ad\u0131mlar sonras\u0131nda, art\u0131k yaz\u0131l\u0131m\u0131n olu\u015fturulmas\u0131na y\u00f6nelik ad\u0131mlar\u0131 tamamlam\u0131\u015f oluyoruz.<\/p>\n<p>\u015eimdi gelelim, gitlab CI\/CD ad\u0131mlar\u0131na. Bir \u00f6nceki yaz\u0131mda temel i\u015flevleri tamamlam\u0131\u015ft\u0131k ve linux i\u00e7in build ad\u0131mlar\u0131n\u0131 eklemi\u015ftik. \u015eimdi windows runner i\u00e7in de gerekli ad\u0131mlar\u0131 ekleyerek, pipeline&#8217;\u0131m\u0131z\u0131 tamam\u0131na erdirece\u011fiz.<\/p>\n<p>A\u015fa\u011f\u0131da ilgili pipeline yaml dosyas\u0131n\u0131 g\u00f6rebilirsiniz:<\/p>\n<pre class=\"lang:yaml decode:true \">workflow:\r\n  rules:\r\n    - if: $CI_PIPELINE_SOURCE == \"web\"\r\n    - if: $CI_PIPELINE_SOURCE == \"push\"\r\n    - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"\r\n\r\nstages:\r\n  - build\r\n  - test\r\n\r\nvariables:\r\n  CONAN_HOME: \"$CI_PROJECT_DIR\/.conan2\"\r\n\r\n# --- Windows Job ---\r\nbuild-windows:\r\n  stage: build\r\n  tags:\r\n    - saas-windows-medium-amd64\r\n  variables:\r\n    CC: \"cl\"\r\n    CXX: \"cl\"\r\n    # Conan cache dizinini proje klas\u00f6r\u00fcne sabitle\r\n    CONAN_HOME: \"$CI_PROJECT_DIR\\\\.conan2\"\r\n  cache:\r\n    key: \"conan-win-$CI_COMMIT_REF_SLUG\"\r\n    paths:\r\n      - .conan2\/p\/\r\n  timeout: 60 minutes\r\n  before_script:\r\n    - echo \"Pipeline started by ${env:GITLAB_USER_NAME} \/ @${env:GITLAB_USER_LOGIN}\"\r\n\r\n    # \u2500\u2500 vcvars64.bat'\u0131 PS oturumuna aktar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    - |\r\n      $vswhere = \"C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe\"\r\n      $vsPath  = &amp; $vswhere -latest -products * `\r\n                   -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `\r\n                   -property installationPath\r\n      $vcvars  = Join-Path $vsPath \"VC\\Auxiliary\\Build\\vcvars64.bat\"\r\n      Write-Host \"vcvars64.bat: $vcvars\"\r\n      $envDump = cmd \/c \"`\"$vcvars`\" amd64 &amp;&amp; set\"\r\n      foreach ($line in $envDump) {\r\n        if ($line -match '^([^=]+)=(.*)$') {\r\n          [System.Environment]::SetEnvironmentVariable($matches[1], $matches[2], 'Process')\r\n        }\r\n      }\r\n\r\n    # \u2500\u2500 Conan kurulumu \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    - pip install conan --quiet\r\n    - if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }\r\n    - conan profile detect --force\r\n    - conan profile show\r\n\r\n  script:\r\n    - echo \"Cpp Playground started from Windows with Conan!\"\r\n\r\n    # Ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckle\r\n    - conan install . --output-folder=build --build=missing -s build_type=Release\r\n    - if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }\r\n\r\n    # CMake configure\r\n    - cmake --preset release-msvc\r\n    - if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }\r\n\r\n    # Build\r\n    - cmake --build --preset build-release-msvc\r\n    - if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }\r\n\r\n  artifacts:\r\n    paths:\r\n      - build\/release-msvc\/app\/\r\n      - build\/release-msvc\/test\/\r\n    expire_in: 3 days\r\n    when: always   # hata olsa da artifact'\u0131 sakla \u2014 debug i\u00e7in faydal\u0131\r\n\r\n# --- Linux Job ---\r\nbuild-linux:\r\n  stage: build\r\n  image: ubuntu:24.04\r\n  cache:\r\n    key: \"conan-linux\"\r\n    paths:\r\n      - .conan2\/p\r\n  before_script:\r\n    - apt-get update -y\r\n    - apt-get install -y cmake ninja-build gcc g++ python3-pip git pkg-config sudo\r\n    - pip install conan --break-system-packages\r\n    - conan profile detect --force\r\n  script:\r\n    - echo \"Cpp Playground started from Linux with Conan!\"\r\n    # Ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckle. \r\n    # -c tools.system.package_manager:mode=install: Eksik sistem paketlerini otomatik kurar\r\n    # -c tools.system.package_manager:sudo=True: Kurulum i\u00e7in sudo yetkisini kullan\u0131r\r\n    - conan install . --output-folder=build --build=missing -s build_type=Release -c tools.system.package_manager:mode=install -c tools.system.package_manager:sudo=True\r\n    # Build (Preset kullanarak)\r\n    - cmake --preset release-gcc\r\n    - cmake --build --preset build-release-gcc\r\n  artifacts:\r\n    paths:\r\n      - build\/release-gcc\/app\/\r\n      - build\/release-gcc\/test\/\r\n    expire_in: 1 hour\r\n\r\n# --- Test Job ---\r\ntest-linux:\r\n  stage: test\r\n  image: ubuntu:24.04\r\n  dependencies:\r\n    - build-linux\r\n  script:\r\n    - cd build\/release-gcc\/test\r\n    - .\/sdl3-example-app-test --gtest_output=xml:..\/..\/test-results.xml\r\n  artifacts:\r\n    when: always\r\n    reports:\r\n      junit: build\/release-gcc\/test-results.xml\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Windows i\u00e7in gerekli ad\u0131mlar, <strong>build-windows job<\/strong>&#8216;\u0131 alt\u0131nda ger\u00e7ekle\u015ftiriyoruz. \u015eimdilik hepsi tek bir ad\u0131mda ve bir yerde. Sonraki ad\u0131mlarda bunlar\u0131 da tekrar kullan\u0131labilir hale getirece\u011fiz.<\/p>\n<p>\u00d6ncelikli olarak Conan&#8217;a dair paketleri ve ilgili dosyalar\u0131 genelde, runner \u00e7al\u0131\u015fma dizini alt\u0131na olu\u015fturulmas\u0131 \u00f6nerilmektedir. Bunun i\u00e7in de <strong>CONAN_HOME<\/strong> ortam de\u011fi\u015fkenini tan\u0131mlaman\u0131z yeterli:<\/p>\n<pre class=\"lang:yaml decode:true\"># Conan cache dizinini proje klas\u00f6r\u00fcne sabitle\r\nCONAN_HOME: \"$CI_PROJECT_DIR\\\\.conan2\"<\/pre>\n<p>C++ uygulamalar\u0131n\u0131z gitlab taraf\u0131ndan sunulan &#8220;saas-windows-medium-amd64&#8221; imaj\u0131 i\u00e7erisine kurulu MSBuild ara\u00e7lar\u0131 ile olu\u015fturabilirsiniz.<\/p>\n<p>Bu ara\u00e7 i\u00e7erisinde, Python ve CMake de kuruludur. CMake ile bunu kullanabilmek i\u00e7in \u00f6ncelikle vcvars&#8217;\u0131 \u00e7a\u011f\u0131rmam\u0131z gerekiyor. A\u015fa\u011f\u0131da buna y\u00f6nelik ad\u0131mlar\u0131 bulabilirsiniz:<\/p>\n<pre class=\"lang:yaml decode:true\">    # \u2500\u2500 vcvars64.bat'\u0131 PS oturumuna aktar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    - |\r\n      $vswhere = \"C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe\"\r\n      $vsPath  = &amp; $vswhere -latest -products * `\r\n                   -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 `\r\n                   -property installationPath\r\n      $vcvars  = Join-Path $vsPath \"VC\\Auxiliary\\Build\\vcvars64.bat\"\r\n      Write-Host \"vcvars64.bat: $vcvars\"\r\n      $envDump = cmd \/c \"`\"$vcvars`\" amd64 &amp;&amp; set\"\r\n      foreach ($line in $envDump) {\r\n        if ($line -match '^([^=]+)=(.*)$') {\r\n          [System.Environment]::SetEnvironmentVariable($matches[1], $matches[2], 'Process')\r\n        }\r\n      }<\/pre>\n<p>Bir sonraki ad\u0131mda, Conan kurulumuna y\u00f6nelik ad\u0131mlar\u0131 g\u00f6rebilirsiniz:<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:yaml decode:true\">    # \u2500\u2500 Conan kurulumu \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n    - pip install conan --quiet\r\n    - if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }\r\n    - conan profile detect --force\r\n    - conan profile show<\/pre>\n<p>Son olarak da, yaz\u0131l\u0131m olu\u015fturma ad\u0131mlar\u0131n\u0131 ger\u00e7ekle\u015ftiriyoruz. Burada da \u00fc\u00e7 ad\u0131m var:<\/p>\n<pre class=\"lang:zsh decode:true \">- conan install\r\n- cmake konfig\u00fcrasyon\r\n- cmake build<\/pre>\n<p>Linux i\u00e7in gerekli ad\u0131mlar\u0131, <strong>build-linux<\/strong> job&#8217;\u0131 alt\u0131nda ger\u00e7ekle\u015ftiriyoruz. \u00c7o\u011fu ad\u0131m windows&#8217;a benziyor. Kulland\u0131\u011f\u0131m\u0131z imaj burada, <strong>ubuntu:24.04<\/strong>, bir de burada ba\u011f\u0131ml\u0131l\u0131klar\u0131m\u0131z\u0131 da manuel olarak kuruyoruz.<\/p>\n<p>\u0130lgili yaz\u0131l\u0131m olu\u015fturma ad\u0131mlar\u0131 sonras\u0131nda, <strong>test-linux<\/strong>\u00a0job&#8217;\u0131 ile birlikte, birim test projemizi olu\u015fturup, sonu\u00e7lar\u0131 artifact olarak yay\u0131nl\u0131yoruz.<\/p>\n<p>Evet sevgili dostlar, yine yek\u00fcn\u00fc \u00e7ok olan bir yaz\u0131m\u0131z\u0131n sonuna eri\u015ftik. Conan&#8217;\u0131n kullan\u0131m\u0131na biraz daha a\u015final\u0131k kazand\u0131\u011f\u0131n\u0131z\u0131 umuyorum. Elbette m\u00fcphem bir tak\u0131m noktalar kalm\u0131\u015f olabilir, bununla birlikte bunlar sizlerin ilave ara\u015ft\u0131rmalar\u0131n\u0131z ile sizlere a\u015fikar olacakt\u0131r. \u00d6\u011frenmenin bence en g\u00fczel yollar\u0131ndan birisi de bu ya da \u00e7eto&#8217;yu da bu anlamda kullanabilirsiniz.<\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle kendinize \u00e7ok iyi bak\u0131n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m uzun bir aradan sonra tekrar bir araday\u0131z ve son kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Nerede kalm\u0131\u015ft\u0131k peki \ud83d\ude42 \u00d6ncelikle, C++ ile SDL3 geli\u015ftirmeye y\u00f6nelik haz\u0131rlam\u0131\u015f oldu\u011fumuz cpp-playground reposunda, SDL3 tabanl\u0131 uygulamam\u0131z\u0131 CMake kullanarak hem windows hem de linux&#8217;te nas\u0131l derleyebilece\u011fimize bakm\u0131\u015ft\u0131k. Detaylar i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ya g\u00f6z atabilirsiniz: [ARA\u00c7] SDL3 CI\/CD Bunu yaparken&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27,10,41,188],"tags":[13,1037,155,260,829,1152,1155,1038],"class_list":["post-3107","post","type-post","status-publish","format-standard","hentry","category-arac","category-c","category-modern-c","category-yazilim-muhendisligi","tag-c","tag-ci-cd","tag-cmake","tag-conan","tag-gitlab","tag-runner","tag-sdl3","tag-yaml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Ara\u00e7] SDL3 ve Conan - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Ara\u00e7] SDL3 ve Conan - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m uzun bir aradan sonra tekrar bir araday\u0131z ve son kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Nerede kalm\u0131\u015ft\u0131k peki \ud83d\ude42 \u00d6ncelikle, C++ ile SDL3 geli\u015ftirmeye y\u00f6nelik haz\u0131rlam\u0131\u015f oldu\u011fumuz cpp-playground reposunda, SDL3 tabanl\u0131 uygulamam\u0131z\u0131 CMake kullanarak hem windows hem de linux&#8217;te nas\u0131l derleyebilece\u011fimize bakm\u0131\u015ft\u0131k. Detaylar i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ya g\u00f6z atabilirsiniz: [ARA\u00c7] SDL3 CI\/CD Bunu yaparken... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-28T20:03:22+00:00\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"[Ara\u00e7] SDL3 ve Conan\",\"datePublished\":\"2026-03-28T20:03:22+00:00\",\"dateModified\":\"2026-03-28T20:03:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\"},\"wordCount\":1024,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"c++\",\"CI\/CD\",\"CMAKE\",\"conan\",\"gitlab\",\"runner\",\"SDL3\",\"YAML\"],\"articleSection\":[\"Ara\u00e7\",\"C++\",\"Modern C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\",\"name\":\"[Ara\u00e7] SDL3 ve Conan - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2026-03-28T20:03:22+00:00\",\"dateModified\":\"2026-03-28T20:03:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Ara\u00e7] SDL3 ve Conan\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Ara\u00e7] SDL3 ve Conan - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/","og_locale":"tr_TR","og_type":"article","og_title":"[Ara\u00e7] SDL3 ve Conan - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet sevgili yaz\u0131l\u0131mperver dostlar\u0131m uzun bir aradan sonra tekrar bir araday\u0131z ve son kald\u0131\u011f\u0131m\u0131z yerden devam ediyoruz. Nerede kalm\u0131\u015ft\u0131k peki \ud83d\ude42 \u00d6ncelikle, C++ ile SDL3 geli\u015ftirmeye y\u00f6nelik haz\u0131rlam\u0131\u015f oldu\u011fumuz cpp-playground reposunda, SDL3 tabanl\u0131 uygulamam\u0131z\u0131 CMake kullanarak hem windows hem de linux&#8217;te nas\u0131l derleyebilece\u011fimize bakm\u0131\u015ft\u0131k. Detaylar i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ya g\u00f6z atabilirsiniz: [ARA\u00c7] SDL3 CI\/CD Bunu yaparken... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2026-03-28T20:03:22+00:00","author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"[Ara\u00e7] SDL3 ve Conan","datePublished":"2026-03-28T20:03:22+00:00","dateModified":"2026-03-28T20:03:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/"},"wordCount":1024,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["c++","CI\/CD","CMAKE","conan","gitlab","runner","SDL3","YAML"],"articleSection":["Ara\u00e7","C++","Modern C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/","name":"[Ara\u00e7] SDL3 ve Conan - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2026-03-28T20:03:22+00:00","dateModified":"2026-03-28T20:03:22+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2026\/03\/28\/arac-sdl3-ve-conan\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"[Ara\u00e7] SDL3 ve Conan"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/3107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=3107"}],"version-history":[{"count":1,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/3107\/revisions"}],"predecessor-version":[{"id":3108,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/3107\/revisions\/3108"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=3107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=3107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=3107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}