abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 19:44 | Nová verze

    Byla vydána verze 9.1 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a informačním videu.

    Ladislav Hagara | Komentářů: 1
    včera 17:44 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.

    Ladislav Hagara | Komentářů: 1
    včera 17:22 | IT novinky

    Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.

    Ladislav Hagara | Komentářů: 0
    včera 12:00 | IT novinky

    Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.

    Ladislav Hagara | Komentářů: 3
    18.11. 23:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

    Ladislav Hagara | Komentářů: 0
    18.11. 23:22 | Komunita

    Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.

    Ladislav Hagara | Komentářů: 0
    18.11. 19:44 | Nová verze

    Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    18.11. 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 13
    18.11. 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 1
    18.11. 04:11 | Nová verze

    Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (15%)
     (17%)
    Celkem 371 hlasů
     Komentářů: 17, poslední včera 21:57
    Rozcestník

    Dotaz: Makefile: problém se závislostmi

    Gilhad avatar 16.4.2023 14:56 Gilhad | skóre: 20 | blog: gilhadoviny
    Makefile: problém se závislostmi
    Přečteno: 730×
    V Makefile mám (kromě dalších) následující pravidla (s příslušnými recepty a v tomto pořadí)
    $(info [$(THIS_MAKEFILE)])
    
    .PHONY: all html plain_files static rsync_upload help more_help clean clean_all
    all: html
    html: $(TARGETS) $(BUILD_DIR)/.nav_dir.nav generated.mk
    $(BUILD_DIR)/.nav_dir.nav: $(DIRNAVS)
    generated.mk: $(THIS_MAKEFILE) $(BUILD_DIR)/.nav_dir.nav
    

    když smažu $(BUILD_DIR)/.nav_dir.nav a dám "make all", tak se mi generated.mk nezbuduje:

    $ rm build/.nav_dir.nav 
    $ make all
    [Makefile]
    build/.nav_dir.nav
    === html ===
    === all ===
    $
    

    teprve až když to dám podruhé

    $ make all
    [Makefile]
    ===  generated.mk ===
    [Makefile]
    compile_rst: input output build   file_5
    compile_rst: input output build  directory_2/subdirectory_5 file_5
    compile_rst: input output build  directory_2/subdirectory_5 file_2
    ....
    === html ===
    === all ===
    $
    

    Já si myslím, že když chybí ten build/.nav_dir.nav a dám přebudovat all, které závisí na html, které závisí na generated.mk, který závisí na tom build/.nav_dir.nav, tak by se měl přebudovat hned na poprvé

    Make si to nemyslí. Kde dělám chybu? Jak ji opravit?

    Řešení dotazu:


    Odpovědi

    Řešení 1× (Gilhad (tazatel))
    16.4.2023 15:51 tttttttttttttt
    Rozbalit Rozbalit vše Re: Makefile: problém se závislostmi
    Pravděpodobně jinde než v tom, co jsi poslal. Zkusil jsem podle toho vytvořit Makefile:
    THIS_MAKEFILE=Makefile
    BUILD_DIR=build
    TARGETS=target
    
    .PHONY: all html plain_files static rsync_upload help more_help clean clean_all
    
    all: html
    
    html: $(TARGETS) $(BUILD_DIR)/.nav_dir.nav generated.mk
    
    $(BUILD_DIR)/.nav_dir.nav: $(DIRNAVS)
    	mkdir -p $(BUILD_DIR)/
    	touch $(BUILD_DIR)/.nav_dir.nav
    
    generated.mk: $(THIS_MAKEFILE) $(BUILD_DIR)/.nav_dir.nav
    		touch generated.mk
    
    target: 
    		touch target
    
    a chová se tak, jak očekáváš:
    ❯ make
    touch target
    mkdir -p build/
    touch build/.nav_dir.nav
    touch generated.mk
    ❯ rm -r build                    
    ❯ make
    mkdir -p build/
    touch build/.nav_dir.nav
    touch generated.mk
    Většinou to jde vyčíst z make --debug resp. make --debug=all
    Řešení 1× (Gilhad (tazatel))
    Gilhad avatar 16.4.2023 19:55 Gilhad | skóre: 20 | blog: gilhadoviny
    Rozbalit Rozbalit vše Re: Makefile: problém se závislostmi
    Díky strašně moc!

    Měl jsi naprostou pravdu a já žil léta v omylu. Celý ten problém způsobilo tohle (úplně jinde v tom Makefilu):

    # .SECONDARY: bez targetu ponecha VSECHNY intermediate fily a nesmaze je (pokud se je podari vyrobit)
    # Define the .SECONDARY target to keep intermediate files
    .SECONDARY:
    

    Ve skutečnosti to sice ty intermediate files sice zachová a nemaže, pokud už je jednou vytvoří (což bylo cílem), ale pokud je něco intermediate file a něco jiného ho potřebuje, ale to něco jiného se stejně bude přebudovávat, tak se ten intermediate file vůbec nemusí tvořit (a to je ten problém).

    https://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Special-Targets.html:
    .SECONDARY can be used to avoid redundant rebuilds in some unusual situations. For example:

    Suppose hello.bin is up to date in regards to the source files, but the object file hello.o is missing. Without .SECONDARY make would rebuild hello.o then rebuild hello.bin even though the source files had not changed. By declaring hello.o as .SECONDARY make will not need to rebuild it and won’t need to rebuild hello.bin either. Of course, if one of the source files were updated then all object files would be rebuilt so that the creation of hello.bin could succeed.

    .SECONDARY with no prerequisites causes all targets to be treated as secondary (i.e., no target is removed because it is considered intermediate).
    Ve skutečnosti tam mělo být
    .NOTINTERMEDIATE

    Prerequisites of the special target .NOTINTERMEDIATE are never considered intermediate files. See Chains of Implicit Rules. .NOTINTERMEDIATE with no prerequisites causes all targets to be treated as not intermediate.

    If the prerequisite is a target pattern then targets that are built using that pattern rule are not considered intermediate.
    Tak jsem to opravil a už to dělá co má :)

    Já to používám na vytváření statických stránek na web a mám tam spoustu těch mezilehlých souborů pro urychlení zpracování (seznamy souborů používajících nějaký tag, nějakého autora, v nějakém adresáři ... a často se kvůli takovému mrňavému souboru musí zpracovat naprosto věechny zdrojáky, aby se zjistilo, že se to použije jen v jediném případě), takže když se jednou vytvoří, tak je chci zachovat tak dlouho, dokud je není nutno změnit.

    A jak jsem se koukal, tak se se mnou tenhle špatný překlad/miskoncepce táhne minimálně od roku 2003 ... Takže ještě jednou díky :)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.