Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Finnish
  4. Miten viitataan ympäristömuuttujiin projektitiedostossa ?
Forum Updated to NodeBB v4.3 + New Features

Miten viitataan ympäristömuuttujiin projektitiedostossa ?

Scheduled Pinned Locked Moved Unsolved Finnish
10 Posts 2 Posters 5.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    TheRealJ
    wrote on last edited by
    #1

    Olen parhaimmillani työstämässä projektia, jossa käytetään crypto-kirjastoa ja qwt:tä. Siirrettävyyden parantamiseksi olen miettinyt, että kirjastotiedostoihin yms. viitattaisiin ympäristömuuttujien kautta, esimerkiksi QWT_ROOT (määritelty .bashrc:ssä) viittaisi QWT-asennuksen juureen ja sen kautta voitaisiin viitata tarvittaviin tiedostoihin.

    Ongelmana on, etteivät viittaukset tunnu toimivan. Esimerkiksi eräässä tiedostossa viitataan QWT:n juuressa olevaan qwtconfig.pri tiedostoon, mutta Qt Creator valittaa, ettei sellaista tiedostoa ole. QWT_ROOT on määritelty /usr/local/qwt-6.1.3:ksi (tarkistettu) ja olen yrittänyt viitata tiedostoon eri tavoin:

    $$QWT_ROOT/qwtconfig.pri
    $$[QWT_ROOT]/qwtconfig.pri
    $${QWT_ROOT}/qwtconfig.pri

    mutta tulos on aina sama "no such file". Kyseinen tiedosto on määrätyssä paikassa.

    Voidaanko Qt:n projektitiedostossa edes viitata suoraan ympäristömuuttujiin vai pitääkö kaikki polut määritellä absoluuttisesti ? Vai olenko merkinnyt ympäristömuuttujan väärin ?

    1 Reply Last reply
    1
    • tekojoT Offline
      tekojoT Offline
      tekojo
      wrote on last edited by
      #2

      Hei,

      Ulkoisten kirjastojen käyttöön on Qt:ssa normaali tapa:
      http://doc.qt.io/qt-5/third-party-libraries.html

      Ja vielä konkreettisempi ohje:
      http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html

      Jos oikeasti haluaa ympäristömuuttijien kautta mennä, niin:
      http://doc.qt.io/qtcreator/creator-build-settings.html

      Creator ajaa kaiken aina omassa tilassaan, eli bash asetukset eivät tule automaattisesti mukaan. Perusajatus on että kaikki mitä tehdään voi olla cross platform.

      1 Reply Last reply
      0
      • T Offline
        T Offline
        TheRealJ
        wrote on last edited by
        #3

        Ilmeisesti QWT_ROOT, PATH ja LD_LIBRARY_PATH ovat erikoistapauksia ? QWT:hän on Qt:n plugin ja polku/kirjastomäärittelyt voivat olla varsin tarpeellisia. Jos qwt on asennettu oikein pitäisi polun kaiketi olla oikein määriteltynä.

        Tällä hetkellä buildi menee muuten läpi, mutta Qt Creator valittaa puuttuvasta tiedostosta libcrypto.so.1.1. Kyseinen kirjasto on hakemistossa /usr/local/lib64 ja kyseinen polku on määritelty muuttujassa LD_LIBRARY_PATH (jossa on myös qwt:n kirjastopolku). Jos taas yritän määritellä polun suoraan:

        LIBS += /usr/local/lib64/libcrypto.so.1.1
        tai
        LIBS += -L/usr/local/lib64/libcrypto.so.1.1

        tulee virhe "cannot find -lqwt"

        1 Reply Last reply
        0
        • tekojoT Offline
          tekojoT Offline
          tekojo
          wrote on last edited by
          #4

          hmmm,

          Eli siis tämä qwt kyseessä: http://qwt.sourceforge.net/
          Sen kanssa pääsee helpoiten jos sen importtaa omaan projektiinsa kirjastona. Silloin pitäisi polut mennä oikein.

          Jos haluaa käyttää QWT_ROOT muuttujaa, niin ohje löytyy tuolta keskeltä sivua: http://doc.qt.io/qtcreator/creator-build-settings.html
          Sitten voi käyttää sitä raakojen polkujen sijasta.

          qwt:llä pitää olla oma LIBS += rivi jossain, muuten tosiaan tulee tuo virhe.
          LIBS += -L"/usr/local/qwt-6.1.3/lib/" -lqwt En ole varma polusta, mutta jotain tuonne päin.

          T 1 Reply Last reply
          0
          • tekojoT tekojo

            hmmm,

            Eli siis tämä qwt kyseessä: http://qwt.sourceforge.net/
            Sen kanssa pääsee helpoiten jos sen importtaa omaan projektiinsa kirjastona. Silloin pitäisi polut mennä oikein.

            Jos haluaa käyttää QWT_ROOT muuttujaa, niin ohje löytyy tuolta keskeltä sivua: http://doc.qt.io/qtcreator/creator-build-settings.html
            Sitten voi käyttää sitä raakojen polkujen sijasta.

            qwt:llä pitää olla oma LIBS += rivi jossain, muuten tosiaan tulee tuo virhe.
            LIBS += -L"/usr/local/qwt-6.1.3/lib/" -lqwt En ole varma polusta, mutta jotain tuonne päin.

            T Offline
            T Offline
            TheRealJ
            wrote on last edited by
            #5

            @tekojo Löysin ongelman. Alkuperäisessä projektissa qwt oli toteutettu rinnakkaisena repona, joka liitettiin projektiin ja buildattiin sen mukana. Jotenkin tuo erillisen .pri tiedoston includaus sotki käännöksen. Kun kommentoin sen pois ja merkitsin libqwt:n ja libcrypton mukaan niistä ei tullut enää valituksia.

            Tällä hetkellä ongelmana ovat icu-kirjastot (libicudata, libicuuc ja libicui18n), joihin Qt:n oma core-kirjasto viittaa. Kyseiset kirjastot läytyvät Qt-asennuksen alta, mutta Qt creator ei löydä niitä. Ilmeisesti pitää määritellä rpath-muuttujat...

            tekojoT 1 Reply Last reply
            0
            • T TheRealJ

              @tekojo Löysin ongelman. Alkuperäisessä projektissa qwt oli toteutettu rinnakkaisena repona, joka liitettiin projektiin ja buildattiin sen mukana. Jotenkin tuo erillisen .pri tiedoston includaus sotki käännöksen. Kun kommentoin sen pois ja merkitsin libqwt:n ja libcrypton mukaan niistä ei tullut enää valituksia.

              Tällä hetkellä ongelmana ovat icu-kirjastot (libicudata, libicuuc ja libicui18n), joihin Qt:n oma core-kirjasto viittaa. Kyseiset kirjastot läytyvät Qt-asennuksen alta, mutta Qt creator ei löydä niitä. Ilmeisesti pitää määritellä rpath-muuttujat...

              tekojoT Offline
              tekojoT Offline
              tekojo
              wrote on last edited by
              #6

              @TheRealJ
              icu:sta ei ole omaa kokemusta, mutta arvauksena onko

              configure -icu
              

              määritelty projektille?

              T 1 Reply Last reply
              0
              • tekojoT tekojo

                @TheRealJ
                icu:sta ei ole omaa kokemusta, mutta arvauksena onko

                configure -icu
                

                määritelty projektille?

                T Offline
                T Offline
                TheRealJ
                wrote on last edited by
                #7

                @tekojo Eikö tuo konfiguraatio ole Qt:lle itsessään ? Eli se vaikuttaisi vain Qt:n kääntämisessä. Jos on valmiiksi käännetty Qt Creator ei taida riippuvuudesta päästä noin vain eroon.

                tekojoT 1 Reply Last reply
                0
                • T TheRealJ

                  @tekojo Eikö tuo konfiguraatio ole Qt:lle itsessään ? Eli se vaikuttaisi vain Qt:n kääntämisessä. Jos on valmiiksi käännetty Qt Creator ei taida riippuvuudesta päästä noin vain eroon.

                  tekojoT Offline
                  tekojoT Offline
                  tekojo
                  wrote on last edited by
                  #8

                  @TheRealJ hupsista, joo. Ajatukset jossain muualla.

                  Kyllä nuo kirjastot aina pitäisi olla mukana, ovathan varmasti LD_LIBRARY_PATH polussa?

                  T 1 Reply Last reply
                  0
                  • tekojoT tekojo

                    @TheRealJ hupsista, joo. Ajatukset jossain muualla.

                    Kyllä nuo kirjastot aina pitäisi olla mukana, ovathan varmasti LD_LIBRARY_PATH polussa?

                    T Offline
                    T Offline
                    TheRealJ
                    wrote on last edited by
                    #9

                    @tekojo Alun perin ei ollut. Kun lisäsi LD_LIBRARY_PATH:iin kyseisen polun homma toimi. Tosin vaikuttaa siltä, että LD_LIBRARY_PATH ei osaa tulkita ~ lyhennettä kotihakemistolle. Jos määrittelyssä oli ~/Qt/5.9.2/gcc_64/lib ohjelma valitti ettei löydä kirjastoja. Jos kirjoitti suoraan /home/juhani/Qt/5.9.2/gcc_64/lib ei ongelmaa ollut.

                    LD_LIBRARY_PATH ei tosin ole hyvä ratkaisu asiakastoimituksia varten. Asiakas ei varmastikaan halua ruveta temppuilemaan polkumäärittelyjen kanssa tai ruveta asentelemaan ylimääräisiä ohjelmia. Sitä varten lienee parempi ratkaisu kopioida tärkeät kirjastot asennuspaketin mukaan, jolloin niihin voidaan viitata paikallisesti.

                    tekojoT 1 Reply Last reply
                    0
                    • T TheRealJ

                      @tekojo Alun perin ei ollut. Kun lisäsi LD_LIBRARY_PATH:iin kyseisen polun homma toimi. Tosin vaikuttaa siltä, että LD_LIBRARY_PATH ei osaa tulkita ~ lyhennettä kotihakemistolle. Jos määrittelyssä oli ~/Qt/5.9.2/gcc_64/lib ohjelma valitti ettei löydä kirjastoja. Jos kirjoitti suoraan /home/juhani/Qt/5.9.2/gcc_64/lib ei ongelmaa ollut.

                      LD_LIBRARY_PATH ei tosin ole hyvä ratkaisu asiakastoimituksia varten. Asiakas ei varmastikaan halua ruveta temppuilemaan polkumäärittelyjen kanssa tai ruveta asentelemaan ylimääräisiä ohjelmia. Sitä varten lienee parempi ratkaisu kopioida tärkeät kirjastot asennuspaketin mukaan, jolloin niihin voidaan viitata paikallisesti.

                      tekojoT Offline
                      tekojoT Offline
                      tekojo
                      wrote on last edited by
                      #10

                      @TheRealJ ~ ei tosiaan toimi, en muista millä oletuksella Creator pyörii, mutta käännöksessä ei voi luottaa kotihakemistoon.

                      Asiakkaalle toimitettaessa kannattaa katsoa eri deploy scriptit.
                      Esim http://doc.qt.io/qt-5/windows-deployment.html
                      Vastaavat on macille ja linuxille.

                      Tai sitten tutustua installer frameworkiin http://doc.qt.io/qtinstallerframework/
                      Sillä voi tehdä mitä vaan, mutta vaatii vähän tekemistä.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved