{"id":465,"date":"2018-08-28T12:51:29","date_gmt":"2018-08-28T12:51:29","guid":{"rendered":"http:\/\/www.yazilimperver.com\/?p=465"},"modified":"2019-06-10T20:19:42","modified_gmt":"2019-06-10T20:19:42","slug":"merhaba-cmake","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/","title":{"rendered":"Merhaba CMake"},"content":{"rendered":"<p>Bu ve \u00f6n\u00fcm\u00fczdeki bir veya iki yaz\u0131da CMake arac\u0131ndan bahsetmek istiyorum. \u0130lk yaz\u0131mda genel olarak CMake nedir, neler sunar ve basit bir ka\u00e7 \u00f6rnek \u00fczerinden ge\u00e7ece\u011fiz. Sonraki yaz\u0131mda ise daha karma\u015f\u0131k \u00f6rnekler ile farkl\u0131 kullan\u0131mlar\u0131 inceleyece\u011fiz.<\/p>\n<h2><strong><span style=\"color: #3366ff;\">CMake nedir?<\/span><\/strong><\/h2>\n<p>CMake bizlere C++ program olu\u015fturma s\u00fcrecini <em><strong>i\u015fletim sisteminden<\/strong><\/em> ve arkada kullan\u0131lacak olan <em><strong>derleyiciden<\/strong> <\/em><span style=\"text-decoration: underline;\">ba\u011f\u0131ms\u0131z<\/span> bir \u015fekilde ger\u00e7ekle\u015ftirmemize olanak sa\u011flayacak olan a\u00e7\u0131k kaynakl\u0131 bir sistemdir.<\/p>\n<p>CMake bunu peki nas\u0131l ger\u00e7ekle\u015ftirmekte? CMake, \u00f6zel olarak geli\u015ftirilmi\u015f olan bir betik dil ve olu\u015fturma i\u015fleminin ger\u00e7ekle\u015ftirilece\u011fi her bir dizine konulan CMakeLists.txt dosyalar\u0131n\u0131 kullanarak her bir platform i\u00e7in gerekli olan olu\u015fturma dosyalar\u0131n\u0131 olu\u015fturuyor. Detaylara inmeden \u00f6nce CMake ile neler yapabiliriz ona bakal\u0131m isterseniz?<\/p>\n<ul>\n<li>Statik ve dinamik k\u00fct\u00fcphanelerin olu\u015fturulmas\u0131 i\u00e7in gerekli dosyalar\u0131 olu\u015fturabilirsiniz,<\/li>\n<li>\u00c7al\u0131\u015ft\u0131r\u0131labilir kodlar\u0131n olu\u015fturulmas\u0131 i\u00e7in gerekli dosyalar\u0131 olu\u015fturabilirsiniz,<\/li>\n<li>Bu \u00fcretilecek olan k\u00fct\u00fcphane ve \u00e7al\u0131\u015ft\u0131r\u0131labilir kodlar i\u00e7in gerekli ayarlar\u0131, birbirlerine olan ba\u011f\u0131ml\u0131l\u0131klar\u0131 tan\u0131mlayabilirsiniz,<\/li>\n<li>Daha da \u00f6nemlisi her bir kurulum i\u00e7in kuruluma \u00f6zel veya di\u011fer \u00f6zel se\u00e7enek ve ayarlamalar\u0131 kurulum s\u00fcrecinde kullan\u0131c\u0131ya sunulabilmesine olanak sa\u011flar,<\/li>\n<li>Tek bir kaynak a\u011fac\u0131 (genelde &#8220;<em>source tree<\/em>&#8221; olarak ge\u00e7er) \u00fczerinden birden fazla konfig\u00fcrasyon i\u00e7in bunlar\u0131n olu\u015fturulmas\u0131na olanak sa\u011flar,<\/li>\n<li>Ayr\u0131ca baz\u0131 ara dosyalar olu\u015fturarak geli\u015ftirdi\u011finiz bu CMake kodlar\u0131n\u0131 bir grafiksel kullan\u0131c\u0131 aray\u00fcz\u00fc arac\u0131l\u0131\u011f\u0131 ile kullan\u0131lmas\u0131na olanak sa\u011flar,<\/li>\n<li>Birden fazla ve karma\u015f\u0131k dizinleri i\u00e7eren kaynak kodlar\u0131n derlenmesini daha kolay hale getirir,<\/li>\n<li>B\u00fct\u00fcn kurulum i\u015flerini tek bir dosyaya toplamas\u0131 a\u00e7\u0131s\u0131nda daha derli toplu bir yakla\u015f\u0131m sunar.<\/li>\n<\/ul>\n<p>CMake kullanarak ayr\u0131ca bir\u00e7ok IDE i\u00e7in de gerekli dosyalar\u0131 (\u00d6rne\u011fin: MS Visual Studio, XCode, Eclipse CDT), olu\u015fturma betikleri (\u00d6rne\u011fin: Windows i\u00e7in MSBuild ve NMake betikleri, Unix benzeri sistemler i\u00e7in &#8220;makefile&#8221;) olu\u015fturabilirsiniz.<\/p>\n<p>CMake&#8217;i ile yaz\u0131l\u0131m olu\u015fturma s\u00fcreci iki a\u015famada ger\u00e7ekle\u015ftiriyor. \u00d6ncelikle konfig\u00fcrasyon dosyalar\u0131ndan standart kurulum dosyalar\u0131 olu\u015fturuluyor, daha sonra da bu dosyalar platforma ili\u015fkin kurulum ara\u00e7lar\u0131 da kullan\u0131larak yaz\u0131l\u0131m olu\u015fturuluyor. Burada olu\u015fturma s\u00fcrecini kontrol eden dosya, kurulum i\u00e7erisine dahil olan her bir dizin i\u00e7erisine yerle\u015ftirilen CMakeLists.txt, dosyas\u0131d\u0131r. Bu dosya i\u00e7erisinde bulunan her bir komut ile bu s\u00fcre\u00e7 ger\u00e7ekle\u015ftiriliyor.<\/p>\n<p>\u00c7o\u011fu a\u00e7\u0131k kaynak proje ve yaz\u0131l\u0131m art\u0131k CMake kullanmaya ba\u015flad\u0131. A\u015fa\u011f\u0131daki adreste tam listeye ula\u015fabilirsiniz.<br \/>\n<span style=\"color: #339966;\"><strong><a style=\"color: #339966;\" href=\"https:\/\/www.wikiwand.com\/en\/CMake#\/Applications_that_use_CMake\">CMake kullanan yaz\u0131l\u0131mlar<\/a><\/strong><\/span><\/p>\n<h2><strong><span style=\"color: #3366ff;\">Genel Hususlar<\/span><\/strong><\/h2>\n<p>Bu ba\u015fl\u0131k alt\u0131nda CMake&#8217;e ili\u015fkin bir tak\u0131m hususlar\u0131 sekme sekme inceleyelim:<\/p>\n<ul>\n<li>CMake beti\u011fi yazarken yorumlar eklemek i\u00e7in # kullanabilirsiniz,<\/li>\n<li>Olu\u015fturma dosyalar\u0131na dahil olacak her dizin i\u00e7erisinde muhakkak CMakeLists.txt dosyas\u0131 olmal\u0131,<\/li>\n<li>CMake betikleri komutlar ile olu\u015fturulmakta ve her bir komut liste olarak bir tak\u0131m parametreler almakta. Detayl\u0131 komutlar i\u00e7in <strong><span style=\"color: #339966;\"><a style=\"color: #339966;\" href=\"https:\/\/cmake.org\/cmake\/help\/latest\/manual\/cmake-commands.7.html\">https:\/\/cmake.org\/cmake\/help\/latest\/manual\/cmake-commands.7.html<\/a> <\/span><\/strong>sayfas\u0131na eri\u015febilirsiniz. \u00d6rnekler ile bu komutlar\u0131\u00a0 a\u00e7\u0131klayacak olsam da en \u00e7ok kullan\u0131lan komutlara burada k\u0131saca de\u011finelim:\n<ul>\n<li><strong>message<\/strong>: Girilen mesaj g\u00f6sterilir<\/li>\n<li><strong>cmake_minimum_required:<\/strong>\u00a0\u0130htiya\u00e7 duyulan minimum CMake s\u00fcr\u00fcm\u00fc<\/li>\n<li><strong>add_executable:<\/strong>\u00a0Verilen isim ile \u00e7al\u0131\u015ft\u0131r\u0131labilir hedef uygulama ekler<\/li>\n<li><strong>add_library<\/strong>: Verilen isim ile hedef k\u00fct\u00fcphane olu\u015fturulur<\/li>\n<li><strong>add_subdirectory<\/strong>: Alt dizin kurulum s\u00fcrecine eklenir<br \/>\nBunlar\u0131n yan\u0131nda s\u00fcre\u00e7 esnas\u0131nda \u00e7e\u015fitli mant\u0131klar\u0131 ger\u00e7eklemek ad\u0131na (ko\u015ful, d\u00f6ng\u00fc, vs) komutlar da bulunuyor. Bunlar belirtilen \u00e7iftler halinde kullan\u0131l\u0131yor:<\/li>\n<li><strong>\u00a0if, endif<\/strong><br \/>\n<strong>elif, endif<\/strong><br \/>\n<strong>while, endwhile<\/strong><br \/>\n<strong>foreach, endforeach<\/strong><br \/>\n<strong>list<\/strong><br \/>\n<strong>return<\/strong><br \/>\n<strong>set<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>CMake betikleri i\u00e7erisinde de\u011fi\u015fkenler tan\u0131mlayabilirsiniz. Bunlar alfanumerik ve sadece &#8220;_&#8221; kullanabilirsiniz. Daha sonra bu de\u011fi\u015fkenlere eri\u015fim i\u00e7in &#8220;<strong>${DEGISKEN_ISMI}<\/strong>&#8221; kullan\u0131m\u0131 takip ediliyor. Basit\u00e7e bir de\u011fi\u015fken tan\u0131mlamak i\u00e7in a\u015fa\u011f\u0131daki \u00f6rne\u011fi referans alabilirsiniz:\n<pre class=\"top-set:false bottom-set:false lang:ps decode:true\">set(AUTHOR_NAME \"KAZIM\")\r\nmessage(\"${AUTHOR_NAME}\"<\/pre>\n<p>Daha detayl\u0131 bilgi i\u00e7in <a href=\"https:\/\/cmake.org\/cmake\/help\/v3.0\/manual\/cmake-language.7.html#variables\">https:\/\/cmake.org\/cmake\/help\/v3.0\/manual\/cmake-language.7.html#variables<\/a><\/li>\n<li>Kullan\u0131c\u0131 taraf\u0131ndan tan\u0131mlanan de\u011fi\u015fkenler yan\u0131nda bir tak\u0131m &#8220;<em>predefined<\/em>&#8221; yani \u00f6nceden tan\u0131mlanm\u0131\u015f de\u011fi\u015fkenler de bulunmakta. Bunlardan en \u00f6nemlileri ve a\u00e7\u0131klamalar\u0131 a\u015fa\u011f\u0131daki gibidir:\n<ul>\n<li><strong>CMAKE_BINARY_DIR<\/strong>: Olu\u015fturma a\u011fac\u0131n\u0131n tepesi ve \u00e7\u0131kt\u0131n\u0131n konulaca\u011f\u0131 dizin.<\/li>\n<li><strong>CMAKE_HOME_DIRECTORY<\/strong>: Kaynak a\u011fac\u0131n\u0131n dizini.<\/li>\n<li><strong>CMAKE_SOURCE_DIR<\/strong>: Kaynak a\u011fac\u0131na olan tam dizin.<\/li>\n<li><strong>CMAKE_INCLUDE_PATH<\/strong>: find_file ve find_path komutlar\u0131 taraf\u0131ndan ara\u015ft\u0131r\u0131lan dizinler.<\/li>\n<\/ul>\n<\/li>\n<li>Komutlar b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z, fakat de\u011fi\u015fkenler b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 \u00e7al\u0131\u015f\u0131yor<\/li>\n<li>CMake&#8217;in en \u00f6nemli \u00f6zelliklerinden birisi de farkl\u0131 platformlar i\u00e7in olu\u015fturma s\u00fcrecini sunmas\u0131. Peki bu anlamda bize sa\u011flanan de\u011fi\u015fkenler neler:\n<ul>\n<li><strong>CMAKE_SYSTEM:\u00a0<\/strong>Tam sistem isimleri \u00f6r. &#8220;Linux-2.4.22&#8221;, &#8220;FreeBSD-5.4-RELEASE&#8221;, &#8220;Windows 5.1&#8221;<\/li>\n<li><strong>CMAKE_SYSTEM_NAME:<\/strong>\u00a0Olu\u015fturma s\u00fcreci ile hedeflenen sistem ismi. \u00dc\u00e7 temel de\u011fer: &#8220;Windows&#8221;, &#8220;Darwin&#8221;, &#8220;Android&#8221;, &#8220;FreeBSD&#8221; ve &#8220;Linux&#8221;. Ayr\u0131ca di\u011fer g\u00f6m\u00fcl\u00fc sistemler &#8220;Generic&#8221; olarak isimlendiriliyor.<\/li>\n<li><strong>CMAKE_SYSTEM_VERSION:\u00a0<\/strong>\u0130\u015fletim sistemi s\u00fcr\u00fcm\u00fc.<\/li>\n<li><strong>CMAKE_SYSTEM_PROCESSOR:<\/strong> \u0130\u015flemci ismi (\u00f6r. &#8220;Intel(R) Pentium(R) M processor 2.00GHz&#8221;)<\/li>\n<li><strong>CMAKE_HOST_SYSTEM_NAME:\u00a0<\/strong>Kurulum ger\u00e7ekle\u015ftirilen ev sahibi sistem.<\/li>\n<li>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere bu de\u011fi\u015fkenleri kullanarak olu\u015fturma dosyalar\u0131n\u0131 rahatl\u0131kla uyarlayabilirsiniz. Yaz\u0131m\u0131n sonuna mevcut platforma ili\u015fkin bilgileri g\u00f6steren \u00f6rnek bir kod ta ekliyorum.<\/li>\n<\/ul>\n<\/li>\n<li>Ayr\u0131ca CMake ile makrolar da tan\u0131mlatabilirsiniz. Bunun i\u00e7in &#8220;<strong>add_definition<\/strong>&#8221; komutu kullan\u0131l\u0131yor. En sona bunun ile ilgili de bir \u00f6rnek kod ekliyorum.<\/li>\n<\/ul>\n<p>CMake ile ilgili olan hususlar\u0131n hepsi bunlar m\u0131 peki? Elbette de\u011fil. Daha fazlas\u0131 i\u00e7in ilgili kaynaklara bakabilirsiniz. \u015eimdilik bir \u00f6rnek \u00fczerinden CMake yaz\u0131m\u0131za devam edelim.<\/p>\n<h2><strong><span style=\"color: #3366ff;\">\u0130lk \u00d6rnek<\/span><\/strong><\/h2>\n<p>En temel CMake \u00f6rne\u011fine bakacak olursak (bir nevi &#8220;hello world&#8221;) \u00f6rne\u011fi. A\u015fa\u011f\u0131daki gibi bir kod bizi kar\u015f\u0131layacak:<\/p>\n<pre class=\"top-set:false bottom-set:false lang:c++ decode:true \"># Minimum s\u00fcr\u00fcm bilgisi\r\ncmake_minimum_required (VERSION 3.8)\r\n\r\n# Proje ismi atayalim\r\nproject(CMakeProjectExample)\r\n\r\n# Bu exe i\u00e7in gerekli dosyalari ekleyelim\r\nadd_executable (CMakeProject \"CMakeProject.cpp\" \"CMakeProject.h\")<\/pre>\n<p>Peki bunlar ne anlama geliyor.<\/p>\n<p>\u0130lk sat\u0131rda bu dosyay\u0131 olu\u015fturmak i\u00e7in ihtiya\u00e7 duyulacak olan minimum s\u00fcr\u00fcm numaras\u0131 tan\u0131mlan\u0131yor (numaralar\u0131 b\u00fcy\u00fcterek aksi durumda ne oldu\u011funu g\u00f6rebilirsiniz :).<br \/>\n\u0130kinci sat\u0131rdaki &#8220;<strong>project<\/strong>()&#8221; komutu ile bu projeye bir isim vermi\u015f oluyoruz. Bu ne anlama geliyor sorusunun \u00e7\u0131kmas\u0131n\u0131 bekliyorum \ud83d\ude42 Hemen<strong><span style=\"color: #339966;\"> <a style=\"color: #339966;\" href=\"https:\/\/cmake.org\/cmake\/help\/latest\/command\/project.html\">https:\/\/cmake.org\/cmake\/help\/latest\/command\/project.html<\/a> <\/span><\/strong>sayfas\u0131na bir g\u00f6z atarak \u00e7ok detayl\u0131 bilgi alabilece\u011finiz gibi temel olarak bu komut ile b\u00fct\u00fcn olu\u015fturulacak olan yaz\u0131l\u0131ma bir isim (&#8220;<em>Visual Studio solution<\/em>&#8221; ismi gibi yoksa bir &#8220;<em>solution<\/em>&#8221; alt\u0131nda birden fazla proje bulunabilir), s\u00fcr\u00fcm, dil veya daha detayl\u0131 a\u00e7\u0131klama vb. bilgileri atayabilirsiniz. Bu arada a\u015fa\u011f\u0131da CMake&#8217;e ili\u015fkin yard\u0131m sayfas\u0131nda bu komutun nas\u0131l ifade edildi\u011fini g\u00f6rebilirsiniz:<\/p>\n<pre class=\"top-set:false bottom-set:false lang:ps decode:true \">project(&lt;PROJECT-NAME&gt; [LANGUAGES] [&lt;language-name&gt;...])\r\nproject(&lt;PROJECT-NAME&gt;\r\n[VERSION &lt;major&gt;[.&lt;minor&gt;[.&lt;patch&gt;[.&lt;tweak&gt;]]]]\r\n[DESCRIPTION &lt;project-description-string&gt;]\r\n[HOMEPAGE_URL &lt;url-string&gt;]\r\n[LANGUAGES &lt;language-name&gt;...])<\/pre>\n<p>\u00dc\u00e7\u00fcnc\u00fc ve son komut ise &#8220;<strong>add_executable<\/strong>&#8221; komutu. Bu komut kendisine verilen parametreler ile \u00e7al\u0131\u015ft\u0131r\u0131labilir kod \u00fcretilmesine ili\u015fkin olu\u015fturma dosyalar\u0131ndaki komutlar\u0131 ayarl\u0131yor. \u0130lk parametre \u00e7al\u0131\u015fabilir kodun ismi ikincisi ise kullan\u0131lacak olan kaynak kod. Burada ince bir nokta var. \u00c7o\u011fu di\u011fer kaynakta burada sadece .cpp dosyalar\u0131n\u0131n eklendi\u011fini g\u00f6rebilirsiniz ve ger\u00e7ekten de asl\u0131nda derleme i\u00e7in cpp dosyas\u0131n\u0131n verilmesi yeterlidir. Burada &#8220;header&#8221; dosyas\u0131n\u0131n \u00f6zellikle eklememizin sebebi VS gibi IDE&#8217;lerde de bu dosyalar\u0131n bizlere eklenerek, sunulmas\u0131. Ha bana ne be ya &#8220;header&#8221; dosyalar\u0131ndan diyorsan\u0131z, o dosyalar\u0131 eklemezseniz de olu\u015fturma i\u015flemi ba\u015far\u0131 ile ger\u00e7ekle\u015ftirilecektir.<\/p>\n<p>Evet bu \u00fc\u00e7 sat\u0131r ile art\u0131k bir \u00e7ok platform ve c++ derleyicisi ile helloworld uygulamas\u0131 haz\u0131rlama zahmetinden kurtulmu\u015f olduk. Bu arada windows i\u015fletim sistemi ile visual studio kullanan yaz\u0131l\u0131mperver dostlar. VS ile de CMake projeleri olu\u015fturabiliyorsunuz. Asl\u0131nda githuba koydu\u011fum \u00f6rnekleri VS ile haz\u0131rlad\u0131m.<\/p>\n<p>Gelelim ilgili olu\u015fturma dosyalar\u0131n\u0131 olu\u015fturmaya. Bunlar\u0131 ben komut sat\u0131r\u0131 \u00fczerinden yapaca\u011f\u0131m.<br \/>\nGenelde CMake ile olu\u015fturulacak bu dosyalar\u0131 kaynak kodtan farkl\u0131 bir yere olu\u015fturman\u0131z\u0131 \u00f6nerece\u011fim. Genelde kullan\u0131lan dizin &#8220;build&#8221; oluyor. \u015eimdi ilgili dizini olu\u015ftural\u0131m ve i\u00e7erisine girelim.<\/p>\n<pre class=\"top-set:false bottom-set:false lang:c++ decode:true \">mkdir build\r\ncd build<\/pre>\n<p>Bundan sonra ilgili dosyalar\u0131 &#8220;build&#8221; dizini i\u00e7erisine olu\u015fturmak i\u00e7in yapman\u0131z gereken tek \u015fey &#8220;<strong>cmake ..<\/strong>&#8221; komutunu \u00e7a\u011f\u0131rmak. E\u011fer her \u015fey yolunda gider ise a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 g\u00f6rmeniz gerekiyor. E\u011fer problem ya\u015f\u0131yor iseniz, \u00f6ncelikle CMake&#8217;in kurulu ve ilgili komutlar\u0131n komut sat\u0131r\u0131ndan \u00e7a\u011fr\u0131labildi\u011fini do\u011frulay\u0131n (&#8220;<strong>cmake -version<\/strong>&#8220;).<\/p>\n<pre class=\"theme:powershell top-set:false bottom-set:false lang:c++ decode:true\">-- Building for: Visual Studio 15 2017\r\n-- The C compiler identification is MSVC 19.15.26726.0\r\n-- The CXX compiler identification is MSVC 19.15.26726.0\r\n-- Check for working C compiler: C:\/Program Files (x86)\/Microsoft Visual Studio\/2017\/Community\/VC\/Tools\/MSVC\/14.15.26726\/bin\/Hostx86\/x86\/cl.exe\r\n-- Check for working C compiler: C:\/Program Files (x86)\/Microsoft Visual Studio\/2017\/Community\/VC\/Tools\/MSVC\/14.15.26726\/bin\/Hostx86\/x86\/cl.exe -- works\r\n-- Detecting C compiler ABI info\r\n-- Detecting C compiler ABI info - done\r\n-- Detecting C compile features\r\n-- Detecting C compile features - done\r\n-- Check for working CXX compiler: C:\/Program Files (x86)\/Microsoft Visual Studio\/2017\/Community\/VC\/Tools\/MSVC\/14.15.26726\/bin\/Hostx86\/x86\/cl.exe\r\n-- Check for working CXX compiler: C:\/Program Files (x86)\/Microsoft Visual Studio\/2017\/Community\/VC\/Tools\/MSVC\/14.15.26726\/bin\/Hostx86\/x86\/cl.exe -- works\r\n-- Detecting CXX compiler ABI info\r\n-- Detecting CXX compiler ABI info - done\r\n-- Detecting CXX compile features\r\n-- Detecting CXX compile features - done\r\n-- Configuring done\r\n-- Generating done\r\n-- Build files have been written to: E:\/CMake\/CMakeVSProject\/build<\/pre>\n<p>Yukar\u0131daki sat\u0131rlar ne olaki. Bu sat\u0131rlar arkada\u015flar mevcut komut sat\u0131r\u0131 \u0131\u015f\u0131\u011f\u0131nda CMake&#8217;in olu\u015fturma dosyalar\u0131 i\u00e7in elde etti\u011fi derleyici ve benzeri bilgiler. Bu arada bu daha detayl\u0131 bilgiye CMakeCache.txt dosyas\u0131 i\u00e7erisinden ula\u015fabilirsiniz. Mevcut derleyici i\u00e7in CMake <strong>PATH<\/strong> ortam de\u011fi\u015fkenine bak\u0131yor. E\u011fer bilgisayar\u0131n\u0131zda VS kurulu olmasayd\u0131 veya farkl\u0131 bir platformda bu komutu \u00e7a\u011f\u0131rsayd\u0131n\u0131z muhtemelen a\u015fa\u011f\u0131daki gibi bir hata ile kar\u015f\u0131la\u015facaks\u0131n\u0131z. \u00d6rne\u011fin &#8220;Unix Makefiles&#8221; olu\u015fturmak i\u00e7in ayn\u0131 komut sat\u0131r\u0131nda &#8220;<strong>cmake .. -G &#8220;Unix Makefiles&#8221;<\/strong> &#8221; komutunu \u00e7a\u011f\u0131r\u0131r iseniz a\u015fa\u011f\u0131daki gibi hata alman\u0131z muhtemel.<\/p>\n<pre class=\"theme:powershell top-set:false bottom-set:false lang:c++ decode:true \">CMake Error: CMake was unable to find a build program corresponding to \"Unix Makefiles\". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.\r\nCMake Error: CMAKE_C_COMPILER not set, after EnableLanguage\r\nCMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage\r\n-- Configuring incomplete, errors occurred!\r\nSee also \"E:\/CMake\/CMakeVSProject\/unixBuild\/CMakeFiles\/CMakeOutput.log\".<\/pre>\n<p>Ve ilk dosyalar\u0131m\u0131z\u0131 olu\u015fturduk. A\u015fa\u011f\u0131da CMake&#8217;in bizlere VS i\u00e7in &#8220;build&#8221; dizini i\u00e7erisine olu\u015fturmu\u015f oldu\u011fu dosyalar\u0131 g\u00f6rebiliriz.<\/p>\n<pre class=\"theme:powershell top-set:false bottom-set:false lang:c++ decode:true \">d----- 8\/27\/2018 3:33 PM CMakeFiles\r\n-a---- 8\/27\/2018 3:33 PM 6226 ALL_BUILD.vcxproj\r\n-a---- 8\/27\/2018 3:33 PM 177 ALL_BUILD.vcxproj.filters\r\n-a---- 8\/27\/2018 3:33 PM 13375 CMakeCache.txt\r\n-a---- 8\/27\/2018 3:33 PM 51724 CMakeVSProject.vcxproj\r\n-a---- 8\/27\/2018 3:33 PM 858 CMakeVSProject.vcxproj.filters\r\n-a---- 8\/27\/2018 3:33 PM 3211 CMakeVSProjectExample.sln\r\n-a---- 8\/27\/2018 3:33 PM 1444 cmake_install.cmake\r\n-a---- 8\/27\/2018 3:42 PM 0 fileList.txt\r\n-a---- 8\/27\/2018 3:33 PM 41917 ZERO_CHECK.vcxproj\r\n-a---- 8\/27\/2018 3:33 PM 521 ZERO_CHECK.vcxproj.filters<\/pre>\n<p>&nbsp;<\/p>\n<p>Art\u0131k ilgili .sln dosyas\u0131n\u0131 a\u00e7arak ya da &#8220;<strong>cmake &#8211;build .<\/strong>&#8221; komutunu \u00e7a\u011f\u0131rarak ilgili \u00e7al\u0131\u015fabilir kodu olu\u015fturabilirsiniz.<\/p>\n<h2><span style=\"color: #3366ff;\"><strong>Di\u011fer \u00d6rnekler:<\/strong><\/span><\/h2>\n<p>Platform g\u00f6r\u00fcnt\u00fclemesine ili\u015fkin \u00f6rnek CMake kodu:<\/p>\n<pre class=\"top-set:false bottom-set:false lang:c++ decode:true \">cmake_minimum_required(VERSION 3.9.1)\r\nproject(CMakeHello)\r\nset(CMAKE_CXX_STANDARD 14)\r\n\r\n# UNIX, WIN32, WINRT, CYGWIN, APPLE ortam de\u011fi\u015fkenleri olarak direk sunulmakta\r\nif(UNIX)\r\n   message(\"Bu bir ${CMAKE_SYSTEM_NAME} sistemi\")\r\nelseif(WIN32)\r\n    message(\"Bu bir windows sistemi\")\r\nendif()\r\n\r\n# Benzer \u015fekilde MATCHES de bu ama\u00e7 ile kullan\u0131labilir\r\n# Darwin Apple sisteminin ismi\r\nif(${CMAKE_SYSTEM_NAME} MATCHES Darwin)\r\n      message(\"Bu bir ${CMAKE_SYSTEM_NAME} sistemi\")\r\nelseif(${CMAKE_SYSTEM_NAME} MATCHES Windows)\r\n       message(\"Bu bir Windows sistemi\")\r\nendif()\r\n\r\nadd_executable(cmake_hello main.cpp)<\/pre>\n<p>\u015eimdi makro tan\u0131mlanmas\u0131na ili\u015fkin bir \u00f6rne\u011fe bakal\u0131m. \u00d6ncelikle CMake koduna bakal\u0131m:<\/p>\n<pre class=\"top-set:false bottom-set:false lang:c++ decode:true\">cmake_minimum_required(VERSION 3.9.1)\r\nproject(CMakeHello)\r\nset(CMAKE_CXX_STANDARD 14)\r\n\r\n# Sisteme g\u00f6re tan\u0131mlama ekleyelim. Daha sonra bunu kod i\u00e7erisinden kullanaca\u011f\u0131z\r\nif(${CMAKE_SYSTEM_NAME} MATCHES Darwin)\r\n     add_definitions(-DCMAKEMACROSAMPLE=\"Apple MacOS\")\r\nelseif(${CMAKE_SYSTEM_NAME} MATCHES Windows)\r\n     add_definitions(-DCMAKEMACROSAMPLE=\"Windows PC\")\r\nendif()\r\nadd_executable(cmake_hello main.cpp)<\/pre>\n<p>A\u015fa\u011f\u0131da yukar\u0131daki CMake tan\u0131mlamalar\u0131n\u0131n kullan\u0131m\u0131na ili\u015fkin kodu bulabilirsiniz:<\/p>\n<pre class=\"top-set:false bottom-set:false lang:c++ decode:true \">#include &lt;iostream&gt;\r\n\r\n#ifndef CMAKEMACROSAMPLE\r\n    #define CMAKEMACROSAMPLE \"NO SYSTEM NAME\"\r\n#endif\r\n\r\nauto sum(int a, int b)\r\n{\r\n    return a + b;\r\n}\r\n\r\nint main() \r\n{\r\n    std::cout&lt;&lt;\"Hello CMake!\"&lt;&lt;std::endl;\r\n    std::cout&lt;&lt;CMAKEMACROSAMPLE&lt;&lt;std::endl;\r\n    std::cout&lt;&lt;\"Sum of 3 + 4 :\"&lt;&lt;sum(3, 4)&lt;&lt;std::endl;\r\n    return 0;\r\n}<\/pre>\n<h2><strong><span style=\"color: #3366ff;\">Kaynaklar:<\/span><\/strong><\/h2>\n<p>Elbette bu yaz\u0131mda da bir \u00e7ok kaynaktan faydaland\u0131m. Bunlara eri\u015ferek bilgilerinizi peki\u015ftirebilirsiniz.<\/p>\n<ul>\n<li><strong><span style=\"color: #339966;\"><a href=\"https:\/\/www.johnlamp.net\/cmake-tutorial-1-getting-started.html\">https:\/\/www.johnlamp.net\/cmake-tutorial-1-getting-started.html<\/a> &lt;= \u00d6zellikle bu olduk\u00e7a detayl\u0131 anlat\u0131m i\u00e7eriyor.<\/span><\/strong><\/li>\n<li><a href=\"https:\/\/gitlab.kitware.com\/cmake\/community\/wikis\/doc\/cmake\/Examples\"><strong><span style=\"color: #339966;\">https:\/\/gitlab.kitware.com\/cmake\/community\/wikis\/doc\/cmake\/Examples<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/www.wikiwand.com\/en\/CMake#\/Applications_that_use_CMake\"><strong><span style=\"color: #339966;\">https:\/\/www.wikiwand.com\/en\/CMake#\/Applications_that_use_CMake<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/clion\/quick-cmake-tutorial.html\"><strong><span style=\"color: #339966;\">https:\/\/www.jetbrains.com\/help\/clion\/quick-cmake-tutorial.html<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/cmake.org\/cmake-tutorial\/\"><strong><span style=\"color: #339966;\">https:\/\/cmake.org\/cmake-tutorial\/<\/span><\/strong><\/a><\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Bu ve \u00f6n\u00fcm\u00fczdeki bir veya iki yaz\u0131da CMake arac\u0131ndan bahsetmek istiyorum. \u0130lk yaz\u0131mda genel olarak CMake nedir, neler sunar ve basit bir ka\u00e7 \u00f6rnek \u00fczerinden ge\u00e7ece\u011fiz. Sonraki yaz\u0131mda ise daha karma\u015f\u0131k \u00f6rnekler ile farkl\u0131 kullan\u0131mlar\u0131 inceleyece\u011fiz. CMake nedir? CMake bizlere C++ program olu\u015fturma s\u00fcrecini i\u015fletim sisteminden ve arkada kullan\u0131lacak olan derleyiciden ba\u011f\u0131ms\u0131z bir \u015fekilde ger\u00e7ekle\u015ftirmemize&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":467,"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,11],"tags":[156,155,159,63,158,157,58],"class_list":["post-465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arac","category-visual-studio","tag-build","tag-cmake","tag-cmake-gui","tag-cross-platform","tag-makefile","tag-platform-independent-build","tag-visual-studio"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Merhaba CMake  - 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\/2018\/08\/28\/merhaba-cmake\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:tr]Merhaba CMake [:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Bu ve \u00f6n\u00fcm\u00fczdeki bir veya iki yaz\u0131da CMake arac\u0131ndan bahsetmek istiyorum. \u0130lk yaz\u0131mda genel olarak CMake nedir, neler sunar ve basit bir ka\u00e7 \u00f6rnek \u00fczerinden ge\u00e7ece\u011fiz. Sonraki yaz\u0131mda ise daha karma\u015f\u0131k \u00f6rnekler ile farkl\u0131 kullan\u0131mlar\u0131 inceleyece\u011fiz. CMake nedir? CMake bizlere C++ program olu\u015fturma s\u00fcrecini i\u015fletim sisteminden ve arkada kullan\u0131lacak olan derleyiciden ba\u011f\u0131ms\u0131z bir \u015fekilde ger\u00e7ekle\u015ftirmemize... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-28T12:51:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-06-10T20:19:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/08\/CmakeLogo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"225\" \/>\n\t<meta property=\"og:image:height\" content=\"225\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"11 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\/2018\/08\/28\/merhaba-cmake\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Merhaba CMake\",\"datePublished\":\"2018-08-28T12:51:29+00:00\",\"dateModified\":\"2019-06-10T20:19:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\"},\"wordCount\":1734,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"build\",\"CMAKE\",\"cmake gui\",\"Cross Platform\",\"makefile\",\"platform independent build\",\"Visual Studio\"],\"articleSection\":[\"Ara\u00e7\",\"Visual Studio\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\",\"name\":\"[:tr]Merhaba CMake [:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2018-08-28T12:51:29+00:00\",\"dateModified\":\"2019-06-10T20:19:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Merhaba CMake\"}]},{\"@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":"[:tr]Merhaba CMake [:] - 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\/2018\/08\/28\/merhaba-cmake\/","og_locale":"tr_TR","og_type":"article","og_title":"[:tr]Merhaba CMake [:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Bu ve \u00f6n\u00fcm\u00fczdeki bir veya iki yaz\u0131da CMake arac\u0131ndan bahsetmek istiyorum. \u0130lk yaz\u0131mda genel olarak CMake nedir, neler sunar ve basit bir ka\u00e7 \u00f6rnek \u00fczerinden ge\u00e7ece\u011fiz. Sonraki yaz\u0131mda ise daha karma\u015f\u0131k \u00f6rnekler ile farkl\u0131 kullan\u0131mlar\u0131 inceleyece\u011fiz. CMake nedir? CMake bizlere C++ program olu\u015fturma s\u00fcrecini i\u015fletim sisteminden ve arkada kullan\u0131lacak olan derleyiciden ba\u011f\u0131ms\u0131z bir \u015fekilde ger\u00e7ekle\u015ftirmemize... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2018-08-28T12:51:29+00:00","article_modified_time":"2019-06-10T20:19:42+00:00","og_image":[{"width":225,"height":225,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/08\/CmakeLogo.jpg","type":"image\/jpeg"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"11 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Merhaba CMake","datePublished":"2018-08-28T12:51:29+00:00","dateModified":"2019-06-10T20:19:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/"},"wordCount":1734,"commentCount":2,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["build","CMAKE","cmake gui","Cross Platform","makefile","platform independent build","Visual Studio"],"articleSection":["Ara\u00e7","Visual Studio"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/","name":"[:tr]Merhaba CMake [:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2018-08-28T12:51:29+00:00","dateModified":"2019-06-10T20:19:42+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2018\/08\/28\/merhaba-cmake\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Merhaba CMake"}]},{"@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\/465","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=465"}],"version-history":[{"count":9,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/465\/revisions"}],"predecessor-version":[{"id":1196,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/465\/revisions\/1196"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/467"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}