CMake: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
(+grafika)
M (Dodaję szablon {{stopka}})
 
(Nie pokazano 6 wersji utworzonych przez 5 użytkowników)
Linia 1: Linia 1:
{{programisto}}
{{programowanie}}
{{programowanie}}
'''CMake''' – [[język programowania]] wysokiego poziomu, mający w założeniach zastąpić stary i niewygodny [[Make (program)|make]]. W miarę dokładania kolejnych funkcjonalności okazało się, że otrzymany twór stanowi kompletną [[maszyna Turinga|maszynę Turinga]], co całkowicie wyeliminowało konieczność używania jakiegokolwiek [[kompilator]]a czy [[interpreter]]a. Często mylnie nazywany „narzędziem do zarządzania procesem kompilacji” z powodu pierwotnego celu postawionego przez jego twórców.
[[Plik:Cmake.svg|180px|thumb|Logo kompilatora]]
'''CMake''' – [[język programowania]] wysokiego poziomu, mający w założeniach zastąpić stary i niewygodny program o nazwie [[Make (program)|make]] tak samo, jak [[C++]] miał stanowić „lepsze [[C (język programowania)|C]]”. W miarę dokładania kolejnych funkcjonalności okazało się, że otrzymany twór stanowi kompletną [[maszyna Turinga|maszynę Turinga]], co całkowicie wyeliminowało konieczność używania jakiegokolwiek [[kompilator]]a. Często mylnie nazywany „narzędziem do zarządzania procesem kompilacji” z powodu pierwotnego celu postawionego przez jego twórców.
== Prostota ==
Jest to jeden z najprostszych języków. Aby uzyskać najprostszy możliwy program, który [[Poradnik:Jak opierdalać się konkretnie|nic nie robi]], nie trzeba pisać żadnego maina. Pusty plik CMakeLists.txt w zupełności wystarczy. Obok niego tworzymy sobie katalog „build”, gdzie wchodzimy i po wykonaniu <code>cmake ..</code> możemy oglądać nasze logi kompilacji w Czarnej Konsoli Hakerów™.


Kolejnym krokiem jest napisanie programu „żegnaj świecie”, co nie jest znacząco trudniejsze i sprowadza się do wywołania <code>message("Hello world!")</code>. Nie potrzebujemy żadnych „inkludów”, żadnego informowania o tym, czego chcemy używać. Najprostsze przypadki są już wbudowane w sam język.
== Zmienne ==
== Zmienne ==
Jeśli lubisz [[PHP]], to na pewno spodoba Ci się koncepcja pisania dolarów przy wszelkich zmiennych. Tutaj jest nawet ciekawiej, bo każda z nich jest ozdobiona wąsami z obu stron. Należy przy tym pamiętać, że ozdoby nakładamy tylko przy odczycie, inaczej wystąpi błąd. Dlaczego? [[Bo tak|Nie pytaj]], taka jest tutejsza składnia, przyzwyczaisz się.
Jeśli lubisz [[PHP]] lub [[kapitalizm]], to na pewno spodoba Ci się koncepcja pisania dolarów przy wszelkich zmiennych. Tutaj jest nawet ciekawiej, bo każda z nich jest ozdobiona wąsami z obu stron. Należy przy tym pamiętać, że ozdoby nakładamy tylko przy odczycie, inaczej wystąpi błąd. Dlaczego? [[Bo tak|Nie pytaj]], taka jest tutejsza składnia, przyzwyczaisz się.
<pre>set(witaj "Hello world!")
<pre>set(witaj "Hello world!")
message("${witaj}")</pre>
message("${witaj}")</pre>

== Pętle ==
== Pętle ==
Przykładowa pętelka:
Tutaj sytuacja jest równie prosta. Możemy używać typowej pętli while i to nam w zupełności wystarczy do zapisania wszystkiego. Ewentualnie możemy użyć foreach do wygodnego przechodzenia przez wszystkie elementy jakiejś listy. Przykładowa pętelka:
<pre>cmake_minimum_required(VERSION 3.5)
<pre>cmake_minimum_required(VERSION 3.5)
set(counter 1)
set(counter 1)
Linia 21: Linia 17:
set(counter ${temp_counter})
set(counter ${temp_counter})
endwhile()</pre>
endwhile()</pre>

Jak widać, dodaliśmy w pierwszej linijce deklarację używanej wersji języka, żeby nasz kompilator wypluwał nam o jednego warninga mniej. Do wszelkich porównań mamy normalne słowa, takie jak LESS, GREATER czy EQUAL zamiast jakichś dziwacznych operatorów znanych w innych językach. Za pomocą uniwersalnej funkcji math jesteśmy w stanie policzyć wszystko, co jest do policzenia. Nie mamy jakichś dziwnych operatorów inkrementacji ani dekrementacji, po prostu dodajemy lub odejmujemy jedynkę.
Jak widać, dodaliśmy w pierwszej linijce deklarację używanej wersji języka, żeby nasz interpreter wypluwał nam o jednego warninga mniej. Do wszelkich porównań mamy normalne słowa, takie jak LESS, GREATER czy EQUAL zamiast jakichś dziwacznych operatorów znanych w innych językach. Za pomocą uniwersalnej funkcji math jesteśmy w stanie policzyć wszystko, co jest do policzenia. Proste?
== Funkcje ==

Tutaj również nie ma wielkiej filozofii, nazywamy sobie jakoś naszą funkcję i ją wywołujemy.
== Zobacz też ==
<pre>cmake_minimum_required(VERSION 3.5)
* [[C (język programowania)]]
function(printNumbers from to)
* [[C++]]
while((${from} LESS ${to}) OR (${from} EQUAL ${to}))
* [[C Sharp|C#]]
message(${from})
* [[CCC]]
math(EXPR next "${from}+1")

set(from ${next})
{{stopka}}
endwhile()
endfunction()
printNumbers(1 5)
printNumbers(7 9)</pre>
W przykładzie widać, że operatory logiczne również są proste i intuicyjne. Mamy AND, OR i NOT. To nam w zupełności wystarczy do zapisania dowolnych, nawet najbardziej dziwacznych warunków logicznych, jakie będziemy chcieli tutaj zastosować.
== Coś trudniejszego ==
Zalety tego języka można wymieniać długo. No dobra, to pójdźmy od razu na głęboką wodę. Chcemy pobrać sobie stronę główną Nonsy i zapisać ją do pliku index.html na dysku. Pewnie myślisz, że musimy szukać jakiejś biblioteki do obsługi sieci, co? Nic z tego, kod robiący to zadanie można zapisać w dwóch prostych linijkach, o tak:
<pre>cmake_minimum_required(VERSION 3.5)
file(DOWNLOAD "https://nonsa.pl/wiki/Strona główna" "${CMAKE_BINARY_DIR}/index.html")</pre>
Nie musisz wiedzieć, jak działa HTTPS, nie musisz się zastanawiać, jakiej biblioteki użyć. To wszystko jest już gotowe, twórcy języka zadbali o to, aby każda czynność była w nim prosta i bezbolesna. Wpisujesz dwie linijki i masz to, czego oczekujesz. Szybkie, proste i przyjemne. Warto wiedzieć, że CMAKE_SOURCE_DIR oznacza katalog z kodem źródłowym, a CMAKE_BINARY_DIR to folder, do którego trafią binarki.
[[Kategoria:Języki programowania]]
[[Kategoria:Języki programowania]]

Aktualna wersja na dzień 01:09, 21 gru 2021

Ten artykuł jest częścią cyklu naukowego języki komputerowe.

Języki programowania:


Inne języki komputerowe:


edytuj ten szablon

CMakejęzyk programowania wysokiego poziomu, mający w założeniach zastąpić stary i niewygodny make. W miarę dokładania kolejnych funkcjonalności okazało się, że otrzymany twór stanowi kompletną maszynę Turinga, co całkowicie wyeliminowało konieczność używania jakiegokolwiek kompilatora czy interpretera. Często mylnie nazywany „narzędziem do zarządzania procesem kompilacji” z powodu pierwotnego celu postawionego przez jego twórców.

Zmienne[edytuj • edytuj kod]

Jeśli lubisz PHP lub kapitalizm, to na pewno spodoba Ci się koncepcja pisania dolarów przy wszelkich zmiennych. Tutaj jest nawet ciekawiej, bo każda z nich jest ozdobiona wąsami z obu stron. Należy przy tym pamiętać, że ozdoby nakładamy tylko przy odczycie, inaczej wystąpi błąd. Dlaczego? Nie pytaj, taka jest tutejsza składnia, przyzwyczaisz się.

set(witaj "Hello world!")
message("${witaj}")

Pętle[edytuj • edytuj kod]

Przykładowa pętelka:

cmake_minimum_required(VERSION 3.5)
set(counter 1)
set(max_counter 10)
while(${counter} LESS ${max_counter})
  message(${counter})
  math(EXPR temp_counter "${counter}+1")
  set(counter ${temp_counter})
endwhile()

Jak widać, dodaliśmy w pierwszej linijce deklarację używanej wersji języka, żeby nasz interpreter wypluwał nam o jednego warninga mniej. Do wszelkich porównań mamy normalne słowa, takie jak LESS, GREATER czy EQUAL zamiast jakichś dziwacznych operatorów znanych w innych językach. Za pomocą uniwersalnej funkcji math jesteśmy w stanie policzyć wszystko, co jest do policzenia. Proste?

Zobacz też[edytuj • edytuj kod]