Dobry den.
Zasa dakujem za tutorial. Mal som mierne problemy s kompilaciou, cmake sa stazoval na nejake "policy" a nepoznal prikaz "IN_LIST". Co som pochopil ako bezbecnostne opatrenia (?) a ze pre pouzitie urcitych prikazov je mu ich treba povolit. Kompilacia sa podarila pridanim
if(COMMAND cmake_policy)
cmake_policy(SET CMP0057 NEW)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
na zaciatok "CMakeLists.txt" (da sa to obist aj pridanim parametrov k cmake prikazu).
Ale ine som chcel. Mam otazku. Po spusteni mi vykreslilo okno, to ale bolo nedekorovane. Co ma zmiatlo, lebo na Vasom obrazku na konci dekoracie boli. Od coho to zalezi ci budu dekoracie, ci nie?
Dakujem.
Hm, trochu jsem pogooglil po netu a vypadá, že problém se objevil v posledním cmake 3.24.1. Mě se ale zdá, že je to bug v cmake. Nová policy pro CMP0057 je zde od verze 3.3 a CMP0003 od verze 2.6.0. Pokud tedy zavoláme cmake_policy(VERSION 3.10.2), měly by tyto policies být automaticky nastaveny na NEW. A stránka https://cmake.org/cmake/help/latest/command/cmake_policy.html explicitně říká, že:
Note that the cmake_minimum_required(VERSION) command implicitly calls cmake_policy(VERSION) too.
A my v projektu voláme cmake_minimum_required(VERSION 3.10.2). Buď mi něco uniká, nebo je to buga v cmake. Kdybyste ještě na něco přišel, napište.
Aha, tak to bude tym, ze sa neriadim navodom a skusam buildovat priamo z github repozitara a nie z .zip suboru.
V githubovom CMakeLists.txt ten prikaz cmake_minimum_required(VERSION 3.10.2) nie je, pridava sa az v make-zip.sh, ktory vytvare spomnany .zip subor s lekciou. Tam to funguje.
Takze sa ospravedlnujem za pripomienku.
Ale aj tak ma zaujuma to dekorovanie okien. V tomto priklade a aj v nasledujucom (12-resizableWindow) mi na waylandovom GNOME 42 (Manjaro Linux) otvori okno bez dekoracii. Teda bez hornej listy a okrajov. A teda okno sa neda ani presuvat, ani zmenit jeho velkost. Neviete co by to mohlo byt?
Super. Záhada vyřešena. Ano, pokud kompilujete z githubu, musíte v cmake kompilovat všechny examples naráz. Abych se vyjádřil přesně: v cmake musíte nastavit cestu ke zdrojákům do kořene toho, co stáhnete z github. Tam je CMakeLists.txt, který obsahuje cmake_minimum_required a který vám vytvoří solution pro všechny examply naráz. Pro aktivaci konkrétního examplu v MSVC na něj musíte kliknout pravým a vybrat "Set as Startup Project".
Ohledně dekorací okna, pokusím se něco zjistit a odpovím v diskuzi následujícího článku, kde tato věc zazněla poprvé.