Portál AbcLinuxu, 12. května 2025 08:55

Dotaz: Dvojtečky v cílech make

17.6.2004 12:40 unchallenger | skóre: 69 | blog: unchallenger
Dvojtečky v cílech make
Přečteno: 75×
Odpovědět | Admin
Potřebuji v Makefile pravidla vytvářející soubory s dvojtečkou ve názvu (blbé, ale je to prostě tak). V dokumentaci jsem nic nenašel, takže jsem nakonec použil metodu ,,když tam napíšeš dost backslashů, tak to musí fungovat``...

Dopisováním backslashů jsem dospěl u GNU make k jednomu v závislosti a třem v cíli, což se zdá fungovat:
man: Gwyddion\:\:dump.3pm
                                              # Ahoj Leoši
Gwyddion\\\:\\\:dump.3pm: Gwyddion/dump.pm
	pod2man ...
Otázka je: nenašel jsem to v dokumentaci, takže je to něco, co funguje náhodou s GNU make? Nebo to funguje všude? Nedá se to řešit nějak líp (tím v nemyslím v tomto konkrétním případě přes ExtUtils::MakeMaker + Makefile.PL, ale obecně)?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.6.2004 13:20 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Dvojtečky v cílech make
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkusil jsem
all: foo\:\:bar
#
foo\\\:\\\:bar: hello
        touch foo::bar
gmake -- v pohode

pmake na Linuxu (http://packages.debian.org/unstable/devel/pmake):
pmake: don't know how to make foo\:\:bar. Stop
 
pmake: stopped in /tmp/marem2am/make-colons
ale kdyz se v cili pouzije jenom jeden backslash tak to jde:
all: foo\:\:bar
#
foo\:\:bar: hello
        touch foo::bar
Pak jsem zkousel make na jakemsi IRIX64 kappa 6.5 10181058 IP30 mips co mame ve skole, a tam se mi ty dvojtecky nepovesdlo vecpat vubec (ani do cilu, ani do zavislosti). Ale na tom Irixu je i gmake, takze se to da.

Jiny system nemam po ruce. Blby je, ze me nenapada jak neco vygooglit, protoze na dotaz makefile+colon vypadnou tutorialy k make :(
17.6.2004 13:50 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Dvojtečky v cílech make
Chm, tak to je nepříjemné. S jednou dvojtečkou v cíli mi to s gmake nefunguje nijak, dostanu buď (1:1)
make: *** No rule to make target `Gwyddion\:\:dump.3pm'
nebo ještě horší věci...

Asi budu muset

(a) takové věci dělat skriptem, který je vytvoří nezávisle na tom, jestli už existují, spouštěným z jednoho globálního pravidla bez konkrétních jmen souborů (nic moc)

(b) používat timestamps nahrazující skutečné cíle (lepší, ale chaos)

(c) pojmenovávat ty věci bez dvojteček a přejmenovávat je až při make install (naštěstí je asi před make install nepotřebuji pojmenované s dvojtečkou)

Google jsem taky zkoušel ;-) To je naprostá beznaděj, stačilo mi už jen projít všechny výskyty ,colon` v info make, s Google bych asi nikdy neskončil...
17.6.2004 14:11 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Dvojtečky v cílech make
Sakra, všechna ta náhradní řešení ale mají problém, že se o takové soubory už pak neumí postarat automake (což třeba o manuálové stránky jinak umí, stačí je dát do man3_MANS, jenže tady bych skončil na tom, že by se je snažil vyrobit).
19.6.2004 12:06 hub
Rozbalit Rozbalit vše Re: Dvojtečky v cílech make
mozna zkusit dotaz v maillistech vyvojaru (gnu) make ...
19.6.2004 12:09 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Dvojtečky v cílech make
Problém je, že já jsem sice zjistil, jak to udělat GNU make, ale potřeboval bych, aby to fungovalo s kdejakým make, a taková syntaxe zřejmě neexistuje.

Nakonec jsem to vyřešil přes timestamps -- sice přibude v adresářích další balast, ale člověka zvyklého na GNU auto-tools už hned tak něco nerozhodí ;-)

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.