Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: teele - 12.06.15 - klo:17.13
-
Koneessa on Ubuntu 14.04 ja qt5-default ja libqwt. Ennen onnistuin kääntämään ohjelman uudestaan, jos vaikka muokkasin esim. .h -tiedostoa. Buils-essentials on asennettu.
Nyt kuitenkin käy aina näin
le01@le:~/qt/harjoittelu3/qwtkoe04$ make
make: Kohteelle "first" ei tarvitse tehdä mitään.
le01@le:~/qt/harjoittelu3/qwtkoe04$
Eikä auta, vaikka .h -tiedostosta olisi kunka uusi versio tahansa.
Olen yrittänyt noin 143 kertaa varmistaa, että olen päätteellä samassa hakemistossa, jossa .h -tiedosto sijaitsee. Kaikki tiedostot ovat suoraan ajalta ennen käyttisversion vaihtoa, mutta jos puuttuvia tiedostoja olisi tai niiden nimet olisivat vaihtuneet, siitä pitäisi kai tulla erilainen virheilmoitus.
Missähän kohtaa teen virheen tai miten saisin uuden käännöksen?
-
Olisikohan näin yksinkertaista, että pitää tuhota objektitiedostot ennen uudelleen kääntämistä:
rm *.o
(Omalla vastuullasi).
Tosin helpompaa olisi veikata, jos näyttäisit makefilen sisällön ja sorsat.
-
Koneessa on Ubuntu 14.04 ja qt5-default ja libqwt. Ennen onnistuin kääntämään ohjelman uudestaan, jos vaikka muokkasin esim. .h -tiedostoa. Buils-essentials on asennettu.
Nyt kuitenkin käy aina näin
le01@le:~/qt/harjoittelu3/qwtkoe04$ make
make: Kohteelle "first" ei tarvitse tehdä mitään.
le01@le:~/qt/harjoittelu3/qwtkoe04$
Eikä auta, vaikka .h -tiedostosta olisi kunka uusi versio tahansa.
Onko kyseinen .h-tiedosto määritelty .pro-tiedoston HEADERS=... -listassa?
Käännöksen voi toki aina pakottaa uudelleen komentamalla ensin:
make clean
-
Tässä alla on makefile. (laitoin .txt -päätteen lähettämistä varten)
Kun uudelleen asensin käyttiksen, kaikki meni tyhjälle levylle. Vanha versio oli 12.04, uusi on 14.04. Kopioin entiset käännöshakemistot samannimisinä, mutta vaihdoin käyttäjänimeä, enkä missään näekään vanhaa käyttäjänimeä. Kokeilin myös päätteessä komennolla cat .h -tiedosto, ja kyllä se näytti aina muuttuvan, kun sitä muokkasin, joten sen aikaleima pitäisi olla niin uusi, että olisi aihetta kääntää uudestaan.
-
Ratkaisu näyttäisi olevan uuden makefilen tekeminen qmake -qt4 -komennolla. :) Vanha makefile ei siis toiminut, vaikka tiedostonimet kayttäjänimeä lukuun ottamatta olivat ihan samoja.
-
Vanha makefile ei siis toiminut, vaikka tiedostonimet kayttäjänimeä lukuun ottamatta olivat ihan samoja.
Vertailikohan tiedostojen päiväyksiä, eli olisiko riittänyt:
touch makefile
-
toinen tapa, jolla asia ratkeaa, on tosiaan
rm *.o
joka poistaa objektitiedostot. Jostain syystä ei näköjään riittänyt, että lähdetiedostoa eli .h -tiedostoa uusittiin.
Mutta sitten normaalissa käytössä .h -tiedoston muokkaaminen ja sitten sen jälkeen vain make riittää uuteen kääntämiseen.