Edytujesz „CMake”
Z Nonsensopedii, polskiej encyklopedii humoru
Uwaga: Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli zalogujesz się lub utworzysz konto, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Ta edycja może zostać anulowana. Porównaj ukazane poniżej różnice między wersjami, a następnie zapisz zmiany.
Aktualna wersja | Twój tekst | ||
Linia 1: | Linia 1: | ||
{{programowanie}} |
{{programowanie}} |
||
[[Plik:Cmake.svg|180px|thumb|Logo interpretera]] |
|||
'''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 |
'''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 |
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ę. |
||
<pre>set(witaj "Hello world!") |
<pre>set(witaj "Hello world!") |
||
message("${witaj}")</pre> |
message("${witaj}")</pre> |
||
== Pętle == |
== Pętle == |
||
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: |
|||
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 17: | Linia 20: | ||
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ę. |
||
== Funkcje == |
|||
⚫ | 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. |
||
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ż == |