Kayıtlar

cpp osx 4 vscode çoklu dosya derleme

Resim
Son adım olarak, c projesinde olduğu gibi birden fazla dosya derleme ve farklı dizinlerdeki dosyaları derleme işine bakacağız. dosyaları şuradakilerden alıyorum. https://www.go4expert.com/articles/write-multi-files-program-cpp-t29978/ main.cpp #include <iostream> #include <string> using namespace std; #include "Mathematics.h" int main() { int num1, num2, result; Mathematics maths; cout <<"Enter the first number:"; cin>>num1; cout<<"Enter the 2nd number:"; cin>>num2; result = maths.add(num1, num2); cout <<"\nThe result of adding two numbers is: "<<result<<endl; result = maths.subtract(num1, num2); cout <<"The result of subtracting two numbers is: "<<result<<endl; result = maths.multiply(num1, num2); cout <<"The result of multipltying two numbers is: "<<result<<endl; result = maths.divide(num1, num2); cout <<"T...

cpp osx 3 visual studio code ile derleme

şimdi bu yaptığım derlemeyi terminal (windows --> komut satırı) yerine vscode'da nasıl yaparım. burada bilgi var ancak biraz eski https://code.visualstudio.com/docs/languages/cpp ama orada belirttiği gibi bir dosyası  c_cpp_properties.json  oluşturuyorum ki zorunlu değil şimdilik. asıl önemli kısım  tasks.json  dosyası oluşturuyorum. Open the  Command Palette  ( ⇧⌘P ). Select the  Tasks: Configure Task Runner  command and you will see a list of task runner templates. Select  Others  to create a task which runs an external command. bunun için yukarıdaki adımları yapıyorum. versiyon 2.0.0'da geldi bendeki dosya. "version" : "2.0.0" , "tasks" : [ { "taskName" : "echo" , "command" : "echo Hello" , "type" : "shell" } ] buradan da anlaşılacağı gibi, bu taskı (taskın adı "echo") çalıştırırsam ekrana Hello yazacak. çalıştırırken sorduğu soruya " Continue without sc...

cpp osx 2 derleyici seçenekleri

git ikinci adımda git kuruyorum. kurmak derken zaten OS X'te vardı. onu başlatıyorum (initialize). ilgili dizindeyken $ git init Initialized empty Git repository in /Users/xxxxx/workspace/helloWorld/.git/ bunu niye yaptım, orası meçhul. artık alışkanlık oldu biraz. editor ilgili dizini Visual Studio Code ya da Sublime Text 3'e atıyorum. Benim favori editörlerim bunlar. Visual Studio ya da X Code fazla büyük geldi bu kadar küçük kodlarla uğraşmak için. Windows olunca bu ikisinin yanında notepad++ da. bir seçeek.  Tabii ki visual studio code için C/C++ eklentisini yüklemiş olmam lazım. https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools Aslınca bir önceki sayfada yer alan kod görüntüsü de visual studio code'a ait. sadece buraya atınca biraz paragrafların arası açıldı. Tabii ki git ya da editör kullanma konusunda bir zorunluluk yok. ama kullanmak avantaj. bunlarla ilgili ayrı bir şeyler yazmak lazım. derleyici seçenekleri şimdi, kodumu derleyeb...

cpp osx 1 derleme

Şimdi baştan başlıyorum, bu kez cpp ve OS X Önce en basit helloworld kodunu main.cpp diye kaydediyorum. #include <iostream> int main( int argc, const char * argv[]) { std::cout << "Hello, World! \n " ; return 0 ; } sonra bunu derlemek için gerekli derleyicinin olduğunu kontrol: (windows olsa which değil where kullanacaktım komut satırında) $ which g++ /usr/bin/g++ sonra derlemek için: $ g++ main.cpp burada g++ derleyici (yukarıda kontrol etmiştim sisteminde olduğunu. yoksa kurmam gerekiyor.) main.cpp kodumun olduğu dosya sonucunda da dizinde a.out diye bir dosya oluşuyor. bu dosyayı çalıştırırsam hello world çıktısını alıyorum. $ ./a.out Hello, World! eğer dosya ismimin a.out yerine başka bir şey olmasını istiyorsam https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options $  g++ main.cpp -o falan.out "-o" çıktı dosyasını isim vermek istediğim için kullandığım derleyici seçeneği.   " -o file ": Place out...

makefile ile derleme -4

Adım 5: clean rule hellomake dışında yani kodumuzu derleme dışında make'e yeni bir iş yaptırmak için yeni bir kural tanımlıyoruz: clean Öncelikle, anladığım, bu ":" öncesi kuralların sonucunda bir çıktı (output) oluyor. Onun olmaması için, yani make clean dediğimde bazı dosyaları silmesi, clean.exe diye bir şey üretmemesi için .PHONY kuralını çalıştırıyorum. Bu kuralla tanımlanan kurallar çıktı üretmiyor. .PHONY: clean clean dışında başka çıktı üretmesini istemediğim kurallar olsa yanına yazmaya devam edecektim. Şimdi clean kuralını tanımlıyorum: clean: rm -f $(OBJ) Burada dosyayı silecek rm komutunu -f yani "force" parametresi ile çağırıyorum. böylece zaten " dosya yok, yine de devam edecek misin " gibi sorular sormadan olanı silip işini bitiriyor. Ancak burada şu sorun var. komut satırında rm yazınca herhangi bir şey çalışmıyor. yani path'imde gcc.exe gibi make.exe ya da mingw31-make.exe gibi rm.exe olması ger...

makefile ile derleme -3

Kodlarımızı daha verimli bir şekilde derlemek için bazı değişiklikler yapmak gerekiyor. Adım3: object dosyalarını kullanma Daha verimli ile kastım, tüm dosyaları baştan derlemek yerine sadece değişen dosyaları derlemek. Şu anki projemizde 2 c kodu var belki ama çok daha fazla sayıda kaynak kodu olduğunda, birinde yapılan değişiklik için hepsini derlemek mantıklı bir iş olmayacaktır. makefile dosyasında bir kaç küçük değişiklik yapmak gerekiyor. CC=gcc CFLAGS=-I. hellomake: hellomake.o hellofunc.o @echo merhaba $(CC) -o hellomake hellomake.o hellofunc.o $(CFLAGS) Önce derleyici .exe dosyasının adını CC makrosuna yazıyoruz. Böylece ileride derleyiciyi değiştirmek istediğimizde sadece bu kısmı değiştiriyoruz. Bu standart bir kullanım olduğundan, başka biri tarafından yazılan makefile'ın derleyicisini değiştirmek isteyince öncelikle yapacağımız yine bu satırı değiştirmek. Sonra derleyici bayraklarını? (compiler flags) CFLAGS makrosuna giriyoruz. Daha önceden -I i...

makefile ile derleme -2

Resim
Öncelikle, sanki şu linkteki işleri yapmakla başlayacağım. http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/ Burada bir makefile  tutorial  var. Baktım,  tureng  " öğretici başlangıç " diye çevirmiş tutorial'ı. o sitedeki gibi 3 tane kaynak kod dosyası oluşturdum hellomake.c hellofunc.c hellomake.h #include <hellomake.h> int main() { // call a function in another file myPrintHelloMake(); return(0); } #include <stdio.h> #include <hellomake.h> void myPrintHelloMake(void) { printf("Hello makefiles!\n"); return; } /* example include file */ void myPrintHelloMake(void); bu dosyaları C: altında c_dene diye bir klasöre attım. Klasörde sadece bu üç dosya mevcut. MinGW'yi ortam değişkenlerine eklemediğim için bu dizinde, direkt olduğu klasörü belirterek çağıracağım. "C:\MinGW\bin\gcc" --version sonra ilk yaptığım makefile olmadan derlemek Adım1: makefile olmadan derleme "C:\MinGW\bin\g...