CMake: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
M (-szablon)
M (przyciąłem to trochę, nadal nie powala, ale temat sam w sobie jest absurdalny i jako taki dość ciężki do spierdzielenia po całości... niech będzie)
Linia 1: Linia 1:
{{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 interpretera]]
'''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 tudzież [[interpreter]]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 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 20: 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 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. 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.
<pre>cmake_minimum_required(VERSION 3.5)
function(printNumbers from to)
while((${from} LESS ${to}) OR (${from} EQUAL ${to}))
message(${from})
math(EXPR next "${from}+1")
set(from ${next})
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.


== Zobacz też ==
== Zobacz też ==

Wersja z 09:43, 20 sie 2020

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

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

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ż