Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Subproject builds by itself, but can't find includes when entire project is built.

Subproject builds by itself, but can't find includes when entire project is built.

Scheduled Pinned Locked Moved Solved General and Desktop
8 Posts 2 Posters 649 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.
  • YosemiteY Offline
    YosemiteY Offline
    Yosemite
    wrote on last edited by Yosemite
    #1

    I don't understand how subproject include paths work. I have a subproject that builds if I right-click on it and select "Build Subproject." When I build the entire project, the subproject in question can't find any of it's own included headers. This is the .pro file for the subproject:

    # Created by and for Qt Creator This file was created for editing the project sources only.
    # You may attempt to use it for building too, by modifying this file here.
    
    QT       -= core gui
    
    TARGET = Gamma
    TEMPLATE = lib
    
    DEFINES += GAMMA_LIBRARY
    
    HEADERS = \
       $$PWD/external/include/portaudio.h \
       $$PWD/external/include/sndfile.h \
       $$PWD/Gamma/Access.h \
       $$PWD/Gamma/Allocator.h \
       $$PWD/Gamma/Analysis.h \
       $$PWD/Gamma/arr.h \
       $$PWD/Gamma/AudioIO.h \
       $$PWD/Gamma/Config.h \
       $$PWD/Gamma/Constants.h \
       $$PWD/Gamma/Containers.h \
       $$PWD/Gamma/Conversion.h \
       $$PWD/Gamma/Delay.h \
       $$PWD/Gamma/DFT.h \
       $$PWD/Gamma/Domain.h \
       $$PWD/Gamma/Effects.h \
       $$PWD/Gamma/Envelope.h \
       $$PWD/Gamma/FFT.h \
       $$PWD/Gamma/Filter.h \
       $$PWD/Gamma/FormantData.h \
       $$PWD/Gamma/Gamma.h \
       $$PWD/Gamma/gen.h \
       $$PWD/Gamma/HRFilter.h \
       $$PWD/Gamma/ipl.h \
       $$PWD/Gamma/mem.h \
       $$PWD/Gamma/Node.h \
       $$PWD/Gamma/Noise.h \
       $$PWD/Gamma/Oscillator.h \
       $$PWD/Gamma/Print.h \
       $$PWD/Gamma/pstdint.h \
       $$PWD/Gamma/Recorder.h \
       $$PWD/Gamma/rnd.h \
       $$PWD/Gamma/SamplePlayer.h \
       $$PWD/Gamma/Scheduler.h \
       $$PWD/Gamma/scl.h \
       $$PWD/Gamma/SoundFile.h \
       $$PWD/Gamma/Spatial.h \
       $$PWD/Gamma/Strategy.h \
       $$PWD/Gamma/Sync.h \
       $$PWD/Gamma/tbl.h \
       $$PWD/Gamma/Thread.h \
       $$PWD/Gamma/Timer.h \
       $$PWD/Gamma/TransferFunc.h \
       $$PWD/Gamma/Types.h \
       $$PWD/Gamma/UnitMaps.h \
       $$PWD/src/fftpack++.h \
       $$PWD/gamma.h
    
    SOURCES = \
       $$PWD/src/arr.cpp \
       $$PWD/src/AudioIO.cpp \
       $$PWD/src/Conversion.cpp \
       $$PWD/src/DFT.cpp \
       $$PWD/src/Domain.cpp \
       $$PWD/src/FFT_fftpack.cpp \
       $$PWD/src/fftpack++1.cpp \
       $$PWD/src/fftpack++2.cpp \
       $$PWD/src/Print.cpp \
       $$PWD/src/Recorder.cpp \
       $$PWD/src/Scheduler.cpp \
       $$PWD/src/scl.cpp \
       $$PWD/src/SoundFile.cpp \
       $$PWD/src/Timer.cpp
    
    INCLUDEPATH = \
        $$PWD/. \
        $$PWD/external/include \
        $$PWD/Gamma \
        $$PWD/src
    
    DEPENDPATH = \
        $$PWD/. \
        $$PWD/external/include \
        $$PWD/Gamma \
        $$PWD/src
    
    #LibSndFile
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1d
    else:unix: LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
    
    INCLUDEPATH += $$PWD/external/lib_win64
    DEPENDPATH += $$PWD/external/lib_win64
    
    #PortAudio
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64d
    else:unix: LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
    
    INCLUDEPATH += $$PWD/external/lib_win64
    DEPENDPATH += $$PWD/external/lib_win64
    
    

    And this is the .pro file for the top-level subdir project that contains it:

    TEMPLATE = subdirs
    SUBDIRS = App Gamma
    
    App .depends = Gamma
    
    win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/gamma/release/ -lGamma
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/gamma/debug/ -lGamma
    else:unix: LIBS += -L$$OUT_PWD/gamma/ -lGamma
    
    INCLUDEPATH += $$PWD/Gamma
    DEPENDPATH += $$PWD/Gamma
    

    I can alter an example include statement from e.g.

    "#include "Gamma/gen.h""
    

    to

    "#include "../Gamma/gen.h""
    

    And that works. If I print $$PWD from the top-level during QMake I get the project folder, so I though adding $$PWD/Gamma to the INCLUDEPATH would give me what I need.

    I've also tried adding the following to the INCLUDEPATH and DEPENDPATH in the top-level .pro file:
    .
    ..
    Gamma
    ./Gamma
    ./Gamma/Gamma
    ../Gamma
    ../Gamma/Gamma
    $$PWD/Gamma/Gamma

    I clearly misapprehend something about this process, what is it?

    aha_1980A 1 Reply Last reply
    0
    • YosemiteY Yosemite

      I don't understand how subproject include paths work. I have a subproject that builds if I right-click on it and select "Build Subproject." When I build the entire project, the subproject in question can't find any of it's own included headers. This is the .pro file for the subproject:

      # Created by and for Qt Creator This file was created for editing the project sources only.
      # You may attempt to use it for building too, by modifying this file here.
      
      QT       -= core gui
      
      TARGET = Gamma
      TEMPLATE = lib
      
      DEFINES += GAMMA_LIBRARY
      
      HEADERS = \
         $$PWD/external/include/portaudio.h \
         $$PWD/external/include/sndfile.h \
         $$PWD/Gamma/Access.h \
         $$PWD/Gamma/Allocator.h \
         $$PWD/Gamma/Analysis.h \
         $$PWD/Gamma/arr.h \
         $$PWD/Gamma/AudioIO.h \
         $$PWD/Gamma/Config.h \
         $$PWD/Gamma/Constants.h \
         $$PWD/Gamma/Containers.h \
         $$PWD/Gamma/Conversion.h \
         $$PWD/Gamma/Delay.h \
         $$PWD/Gamma/DFT.h \
         $$PWD/Gamma/Domain.h \
         $$PWD/Gamma/Effects.h \
         $$PWD/Gamma/Envelope.h \
         $$PWD/Gamma/FFT.h \
         $$PWD/Gamma/Filter.h \
         $$PWD/Gamma/FormantData.h \
         $$PWD/Gamma/Gamma.h \
         $$PWD/Gamma/gen.h \
         $$PWD/Gamma/HRFilter.h \
         $$PWD/Gamma/ipl.h \
         $$PWD/Gamma/mem.h \
         $$PWD/Gamma/Node.h \
         $$PWD/Gamma/Noise.h \
         $$PWD/Gamma/Oscillator.h \
         $$PWD/Gamma/Print.h \
         $$PWD/Gamma/pstdint.h \
         $$PWD/Gamma/Recorder.h \
         $$PWD/Gamma/rnd.h \
         $$PWD/Gamma/SamplePlayer.h \
         $$PWD/Gamma/Scheduler.h \
         $$PWD/Gamma/scl.h \
         $$PWD/Gamma/SoundFile.h \
         $$PWD/Gamma/Spatial.h \
         $$PWD/Gamma/Strategy.h \
         $$PWD/Gamma/Sync.h \
         $$PWD/Gamma/tbl.h \
         $$PWD/Gamma/Thread.h \
         $$PWD/Gamma/Timer.h \
         $$PWD/Gamma/TransferFunc.h \
         $$PWD/Gamma/Types.h \
         $$PWD/Gamma/UnitMaps.h \
         $$PWD/src/fftpack++.h \
         $$PWD/gamma.h
      
      SOURCES = \
         $$PWD/src/arr.cpp \
         $$PWD/src/AudioIO.cpp \
         $$PWD/src/Conversion.cpp \
         $$PWD/src/DFT.cpp \
         $$PWD/src/Domain.cpp \
         $$PWD/src/FFT_fftpack.cpp \
         $$PWD/src/fftpack++1.cpp \
         $$PWD/src/fftpack++2.cpp \
         $$PWD/src/Print.cpp \
         $$PWD/src/Recorder.cpp \
         $$PWD/src/Scheduler.cpp \
         $$PWD/src/scl.cpp \
         $$PWD/src/SoundFile.cpp \
         $$PWD/src/Timer.cpp
      
      INCLUDEPATH = \
          $$PWD/. \
          $$PWD/external/include \
          $$PWD/Gamma \
          $$PWD/src
      
      DEPENDPATH = \
          $$PWD/. \
          $$PWD/external/include \
          $$PWD/Gamma \
          $$PWD/src
      
      #LibSndFile
      win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1d
      else:unix: LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
      
      INCLUDEPATH += $$PWD/external/lib_win64
      DEPENDPATH += $$PWD/external/lib_win64
      
      #PortAudio
      win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64d
      else:unix: LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
      
      INCLUDEPATH += $$PWD/external/lib_win64
      DEPENDPATH += $$PWD/external/lib_win64
      
      

      And this is the .pro file for the top-level subdir project that contains it:

      TEMPLATE = subdirs
      SUBDIRS = App Gamma
      
      App .depends = Gamma
      
      win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/gamma/release/ -lGamma
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/gamma/debug/ -lGamma
      else:unix: LIBS += -L$$OUT_PWD/gamma/ -lGamma
      
      INCLUDEPATH += $$PWD/Gamma
      DEPENDPATH += $$PWD/Gamma
      

      I can alter an example include statement from e.g.

      "#include "Gamma/gen.h""
      

      to

      "#include "../Gamma/gen.h""
      

      And that works. If I print $$PWD from the top-level during QMake I get the project folder, so I though adding $$PWD/Gamma to the INCLUDEPATH would give me what I need.

      I've also tried adding the following to the INCLUDEPATH and DEPENDPATH in the top-level .pro file:
      .
      ..
      Gamma
      ./Gamma
      ./Gamma/Gamma
      ../Gamma
      ../Gamma/Gamma
      $$PWD/Gamma/Gamma

      I clearly misapprehend something about this process, what is it?

      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @Yosemite your App needs an own .pro file.

      The toplevel .pro file only contains the subdirs and depends, nothing else.

      You can factor out common includes into a .pri file and include in all .pro, though.

      Qt has to stay free or it will die.

      YosemiteY 1 Reply Last reply
      2
      • aha_1980A aha_1980

        @Yosemite your App needs an own .pro file.

        The toplevel .pro file only contains the subdirs and depends, nothing else.

        You can factor out common includes into a .pri file and include in all .pro, though.

        YosemiteY Offline
        YosemiteY Offline
        Yosemite
        wrote on last edited by
        #3

        @aha_1980 Thanks for the reply. App does have a .pro file, I just didn't include it because the errors were with the Gamma project. This is it:

        
        QT += qml quick widgets printsupport
        RESOURCES += qml.qrc \
            styles.qrc
        TEMPLATE = app
        CONFIG += c++17
        
        HEADERS = \
           $$PWD/external/exprtk/exprtk.hpp \
           $$PWD/external/qcustomplot/qcustomplot.h \
           $$PWD/amod.h \
           $$PWD/audifier.h \
           $$PWD/callback.h \
           $$PWD/commands.h \
           $$PWD/constants.h \
        #   $$PWD/dataprocessor.h \
           $$PWD/dataset.h \
           $$PWD/enums.h \
           $$PWD/envelope.h \
           $$PWD/equalizer.h \
           $$PWD/filereader.h \
           $$PWD/fmod.h \
           $$PWD/frame.h \
           $$PWD/granulator.h \
           $$PWD/mainwindow.h \
           $$PWD/mapevaluator.h \
           $$PWD/noise.h \
           $$PWD/oscillator.h \
           $$PWD/panner.h \
           $$PWD/parameter.h \
           $$PWD/parameterfloat.h \
           $$PWD/parameterfloatinterface.h \
           $$PWD/parameterindex.h \
           $$PWD/parameterindexinterface.h \
           $$PWD/playhead.h \
           $$PWD/ringbuffer.h \
           $$PWD/style.h \
           $$PWD/synthitem.h \
           $$PWD/track.h \
           $$PWD/trackheader.h \
           $$PWD/trackname.h \
           $$PWD/trackplotter.h \
           $$PWD/trackview.h \
           $$PWD/transport.h \
           $$PWD/transportwidget.h \
           $$PWD/userdata.h \
           $$PWD/utility.h \
           $$PWD/volume.h
        
        SOURCES = \
           $$PWD/external/qcustomplot/qcustomplot.cpp \
           $$PWD/images/alpha.png \
           $$PWD/images/AM.png \
           $$PWD/images/AUD.png \
           $$PWD/images/down-arrow.svg \
           $$PWD/images/ENV.png \
           $$PWD/images/EQ.png \
           $$PWD/images/FM.png \
           $$PWD/images/interpolate-off.svg \
           $$PWD/images/interpolate-on.svg \
           $$PWD/images/logo.png \
           $$PWD/images/logo.svg \
           $$PWD/images/loop-off.svg \
           $$PWD/images/loop-on.svg \
           $$PWD/images/MOD.png \
           $$PWD/images/NSE.png \
           $$PWD/images/OSC.png \
           $$PWD/images/OUT.png \
           $$PWD/images/PAN.png \
           $$PWD/images/pause.svg \
           $$PWD/images/play.svg \
           $$PWD/images/up-arrow.svg \
           $$PWD/images/VOL.png \
           $$PWD/AM.qml \
           $$PWD/amod.cpp \
           $$PWD/AUD.qml \
           $$PWD/audifier.cpp \
        #   $$PWD/dataprocessor.cpp \
           $$PWD/dataset.cpp \
           $$PWD/deployment.pri \
           $$PWD/Editor.qml \
           $$PWD/EditorDoubleSpinBox.qml \
           $$PWD/EditorFixed.qml \
           $$PWD/EditorFloatParameter.qml \
           $$PWD/EditorLabel.qml \
           $$PWD/EditorLayout.qml \
           $$PWD/EditorMapper.qml \
           $$PWD/EditorMenu.qml \
           $$PWD/EditorParameterHeader.qml \
           $$PWD/EditorScaler.qml \
           $$PWD/EditorTitle.qml \
           $$PWD/ENV.qml \
           $$PWD/envelope.cpp \
           $$PWD/EQ.qml \
           $$PWD/equalizer.cpp \
           $$PWD/filereader.cpp \
           $$PWD/FM.qml \
           $$PWD/fmod.cpp \
           $$PWD/granulator.cpp \
           $$PWD/ItemCreation.js \
           $$PWD/main.cpp \
           $$PWD/main.qml \
           $$PWD/mainwindow.cpp \
           $$PWD/noise.cpp \
           $$PWD/NSE.qml \
           $$PWD/OSC.qml \
           $$PWD/oscillator.cpp \
           $$PWD/OUT.qml \
           $$PWD/Palette.qml \
           $$PWD/PaletteItem.qml \
           $$PWD/PAN.qml \
           $$PWD/panner.cpp \
           $$PWD/parameter.cpp \
           $$PWD/parameterfloat.cpp \
           $$PWD/parameterfloatinterface.cpp \
           $$PWD/parameterindex.cpp \
           $$PWD/parameterindexinterface.cpp \
           $$PWD/PatchManager.qml \
           $$PWD/playhead.cpp \
           $$PWD/qml.qrc \
           $$PWD/README.md \
           $$PWD/SessionCode.js \
           $$PWD/Style.js \
           $$PWD/styles.qrc \
           $$PWD/styles.qss \
           $$PWD/synthitem.cpp \
           $$PWD/SynthItem.qml \
           $$PWD/track.cpp \
           $$PWD/trackheader.cpp \
           $$PWD/trackname.cpp \
           $$PWD/trackplotter.cpp \
           $$PWD/trackview.cpp \
           $$PWD/transport.cpp \
           $$PWD/transportwidget.cpp \
           $$PWD/utility.cpp \
           $$PWD/Utils.js \
           $$PWD/VOL.qml \
           $$PWD/volume.cpp
        
        INCLUDEPATH = \
            $$PWD/. \
            $$PWD/external/qcustomplot
        
        

        Apologies though, I'm not sure what you're asking me to try otherwise. Are you saying that my top-level .pro file has something it shouldn't, or that it is missing something?

        aha_1980A 1 Reply Last reply
        0
        • YosemiteY Yosemite

          @aha_1980 Thanks for the reply. App does have a .pro file, I just didn't include it because the errors were with the Gamma project. This is it:

          
          QT += qml quick widgets printsupport
          RESOURCES += qml.qrc \
              styles.qrc
          TEMPLATE = app
          CONFIG += c++17
          
          HEADERS = \
             $$PWD/external/exprtk/exprtk.hpp \
             $$PWD/external/qcustomplot/qcustomplot.h \
             $$PWD/amod.h \
             $$PWD/audifier.h \
             $$PWD/callback.h \
             $$PWD/commands.h \
             $$PWD/constants.h \
          #   $$PWD/dataprocessor.h \
             $$PWD/dataset.h \
             $$PWD/enums.h \
             $$PWD/envelope.h \
             $$PWD/equalizer.h \
             $$PWD/filereader.h \
             $$PWD/fmod.h \
             $$PWD/frame.h \
             $$PWD/granulator.h \
             $$PWD/mainwindow.h \
             $$PWD/mapevaluator.h \
             $$PWD/noise.h \
             $$PWD/oscillator.h \
             $$PWD/panner.h \
             $$PWD/parameter.h \
             $$PWD/parameterfloat.h \
             $$PWD/parameterfloatinterface.h \
             $$PWD/parameterindex.h \
             $$PWD/parameterindexinterface.h \
             $$PWD/playhead.h \
             $$PWD/ringbuffer.h \
             $$PWD/style.h \
             $$PWD/synthitem.h \
             $$PWD/track.h \
             $$PWD/trackheader.h \
             $$PWD/trackname.h \
             $$PWD/trackplotter.h \
             $$PWD/trackview.h \
             $$PWD/transport.h \
             $$PWD/transportwidget.h \
             $$PWD/userdata.h \
             $$PWD/utility.h \
             $$PWD/volume.h
          
          SOURCES = \
             $$PWD/external/qcustomplot/qcustomplot.cpp \
             $$PWD/images/alpha.png \
             $$PWD/images/AM.png \
             $$PWD/images/AUD.png \
             $$PWD/images/down-arrow.svg \
             $$PWD/images/ENV.png \
             $$PWD/images/EQ.png \
             $$PWD/images/FM.png \
             $$PWD/images/interpolate-off.svg \
             $$PWD/images/interpolate-on.svg \
             $$PWD/images/logo.png \
             $$PWD/images/logo.svg \
             $$PWD/images/loop-off.svg \
             $$PWD/images/loop-on.svg \
             $$PWD/images/MOD.png \
             $$PWD/images/NSE.png \
             $$PWD/images/OSC.png \
             $$PWD/images/OUT.png \
             $$PWD/images/PAN.png \
             $$PWD/images/pause.svg \
             $$PWD/images/play.svg \
             $$PWD/images/up-arrow.svg \
             $$PWD/images/VOL.png \
             $$PWD/AM.qml \
             $$PWD/amod.cpp \
             $$PWD/AUD.qml \
             $$PWD/audifier.cpp \
          #   $$PWD/dataprocessor.cpp \
             $$PWD/dataset.cpp \
             $$PWD/deployment.pri \
             $$PWD/Editor.qml \
             $$PWD/EditorDoubleSpinBox.qml \
             $$PWD/EditorFixed.qml \
             $$PWD/EditorFloatParameter.qml \
             $$PWD/EditorLabel.qml \
             $$PWD/EditorLayout.qml \
             $$PWD/EditorMapper.qml \
             $$PWD/EditorMenu.qml \
             $$PWD/EditorParameterHeader.qml \
             $$PWD/EditorScaler.qml \
             $$PWD/EditorTitle.qml \
             $$PWD/ENV.qml \
             $$PWD/envelope.cpp \
             $$PWD/EQ.qml \
             $$PWD/equalizer.cpp \
             $$PWD/filereader.cpp \
             $$PWD/FM.qml \
             $$PWD/fmod.cpp \
             $$PWD/granulator.cpp \
             $$PWD/ItemCreation.js \
             $$PWD/main.cpp \
             $$PWD/main.qml \
             $$PWD/mainwindow.cpp \
             $$PWD/noise.cpp \
             $$PWD/NSE.qml \
             $$PWD/OSC.qml \
             $$PWD/oscillator.cpp \
             $$PWD/OUT.qml \
             $$PWD/Palette.qml \
             $$PWD/PaletteItem.qml \
             $$PWD/PAN.qml \
             $$PWD/panner.cpp \
             $$PWD/parameter.cpp \
             $$PWD/parameterfloat.cpp \
             $$PWD/parameterfloatinterface.cpp \
             $$PWD/parameterindex.cpp \
             $$PWD/parameterindexinterface.cpp \
             $$PWD/PatchManager.qml \
             $$PWD/playhead.cpp \
             $$PWD/qml.qrc \
             $$PWD/README.md \
             $$PWD/SessionCode.js \
             $$PWD/Style.js \
             $$PWD/styles.qrc \
             $$PWD/styles.qss \
             $$PWD/synthitem.cpp \
             $$PWD/SynthItem.qml \
             $$PWD/track.cpp \
             $$PWD/trackheader.cpp \
             $$PWD/trackname.cpp \
             $$PWD/trackplotter.cpp \
             $$PWD/trackview.cpp \
             $$PWD/transport.cpp \
             $$PWD/transportwidget.cpp \
             $$PWD/utility.cpp \
             $$PWD/Utils.js \
             $$PWD/VOL.qml \
             $$PWD/volume.cpp
          
          INCLUDEPATH = \
              $$PWD/. \
              $$PWD/external/qcustomplot
          
          

          Apologies though, I'm not sure what you're asking me to try otherwise. Are you saying that my top-level .pro file has something it shouldn't, or that it is missing something?

          aha_1980A Offline
          aha_1980A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @Yosemite yeah, remove everything except

          TEMPLATE = subdirs
          SUBDIRS = App Gamma
          App .depends = Gamma

          from the top level pro file and move it into a .pri file.

          Qt has to stay free or it will die.

          YosemiteY 1 Reply Last reply
          2
          • aha_1980A aha_1980

            @Yosemite yeah, remove everything except

            TEMPLATE = subdirs
            SUBDIRS = App Gamma
            App .depends = Gamma

            from the top level pro file and move it into a .pri file.

            YosemiteY Offline
            YosemiteY Offline
            Yosemite
            wrote on last edited by Yosemite
            #5

            @aha_1980

            Gotcha. Here is the new top-level .pro file:

            TEMPLATE = subdirs
            SUBDIRS = App Gamma
            
            App.depends = Gamma
            

            And the common.pri:

            Gamma.subdir = Gamma
            App.subdir = App
            
            INCLUDEPATH += $$PWD/Gamma
            DEPENDPATH += $$PWD/Gamma
            

            I tried including common.pri in the Gamma .pro file thusly:

            !include(common.pri) {
                error("common.pri not found")
            }
            

            But there was no change. The Gamma library still can't find the Gamma include files. Tried including in the top-level .pro just in case, with the same result.

            aha_1980A 1 Reply Last reply
            0
            • YosemiteY Yosemite

              @aha_1980

              Gotcha. Here is the new top-level .pro file:

              TEMPLATE = subdirs
              SUBDIRS = App Gamma
              
              App.depends = Gamma
              

              And the common.pri:

              Gamma.subdir = Gamma
              App.subdir = App
              
              INCLUDEPATH += $$PWD/Gamma
              DEPENDPATH += $$PWD/Gamma
              

              I tried including common.pri in the Gamma .pro file thusly:

              !include(common.pri) {
                  error("common.pri not found")
              }
              

              But there was no change. The Gamma library still can't find the Gamma include files. Tried including in the top-level .pro just in case, with the same result.

              aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Yosemite

              Gamma.subdir = Gamma App.subdir = App

              remove that from the .pri file.

              Then do a full rebuild with running qmake

              Have a look at the compiler output to see the includepaths passes to the compiler

              Your on a good way, you just need to fine-tune a bit!

              Qt has to stay free or it will die.

              1 Reply Last reply
              3
              • YosemiteY Offline
                YosemiteY Offline
                Yosemite
                wrote on last edited by
                #7

                I did get there eventually, I really appreciate the help @aha_1980 .

                I'll try and state what was done clearly, to see if I understand it and to complete the thread. I included common.pri in the Gamma. pro file. I wrote the include path relative to the entire project folder, after printing $$PWD and seeing it was the top-level project folder.

                There were other errors in the .pro files, especially a bunch of extra src files that were accidentally added while importing the subprojects, so here are the results.

                Top-level .pro file:

                TEMPLATE = subdirs
                SUBDIRS = App Gamma
                
                App.depends = Gamma
                
                

                common.pri file:

                INCLUDEPATH += $$PWD/Gamma
                DEPENDPATH += $$PWD/Gamma
                

                Gamma .pro file:

                # Created by and for Qt Creator This file was created for editing the project sources only.
                # You may attempt to use it for building too, by modifying this file here.
                
                QT       -= core gui
                
                TARGET = Gamma
                
                TEMPLATE = lib
                
                CONFIG+= staticlib
                
                DEFINES += GAMMA_LIBRARY
                
                HEADERS = \
                   $$PWD/external/include/portaudio.h \
                   $$PWD/external/include/sndfile.h \
                   $$PWD/Gamma/Access.h \
                   $$PWD/Gamma/Allocator.h \
                   $$PWD/Gamma/Analysis.h \
                   $$PWD/Gamma/arr.h \
                   $$PWD/Gamma/AudioIO.h \
                   $$PWD/Gamma/Config.h \
                   $$PWD/Gamma/Constants.h \
                   $$PWD/Gamma/Containers.h \
                   $$PWD/Gamma/Conversion.h \
                   $$PWD/Gamma/Delay.h \
                   $$PWD/Gamma/DFT.h \
                   $$PWD/Gamma/Domain.h \
                   $$PWD/Gamma/Effects.h \
                   $$PWD/Gamma/Envelope.h \
                   $$PWD/Gamma/FFT.h \
                   $$PWD/Gamma/Filter.h \
                   $$PWD/Gamma/FormantData.h \
                   $$PWD/Gamma/Gamma.h \
                   $$PWD/Gamma/gen.h \
                   $$PWD/Gamma/HRFilter.h \
                   $$PWD/Gamma/ipl.h \
                   $$PWD/Gamma/mem.h \
                   $$PWD/Gamma/Node.h \
                   $$PWD/Gamma/Noise.h \
                   $$PWD/Gamma/Oscillator.h \
                   $$PWD/Gamma/Print.h \
                   $$PWD/Gamma/pstdint.h \
                   $$PWD/Gamma/Recorder.h \
                   $$PWD/Gamma/rnd.h \
                   $$PWD/Gamma/SamplePlayer.h \
                   $$PWD/Gamma/Scheduler.h \
                   $$PWD/Gamma/scl.h \
                   $$PWD/Gamma/SoundFile.h \
                   $$PWD/Gamma/Spatial.h \
                   $$PWD/Gamma/Strategy.h \
                   $$PWD/Gamma/Sync.h \
                   $$PWD/Gamma/tbl.h \
                   $$PWD/Gamma/Thread.h \
                   $$PWD/Gamma/Timer.h \
                   $$PWD/Gamma/TransferFunc.h \
                   $$PWD/Gamma/Types.h \
                   $$PWD/Gamma/UnitMaps.h \
                   $$PWD/src/fftpack++.h \
                   $$PWD/gamma.h
                
                SOURCES = \
                   $$PWD/src/arr.cpp \
                   $$PWD/src/AudioIO.cpp \
                   $$PWD/src/Conversion.cpp \
                   $$PWD/src/DFT.cpp \
                   $$PWD/src/Domain.cpp \
                   $$PWD/src/FFT_fftpack.cpp \
                   $$PWD/src/fftpack++1.cpp \
                   $$PWD/src/fftpack++2.cpp \
                   $$PWD/src/Print.cpp \
                   $$PWD/src/Recorder.cpp \
                   $$PWD/src/Scheduler.cpp \
                   $$PWD/src/scl.cpp \
                   $$PWD/src/SoundFile.cpp \
                   $$PWD/src/Timer.cpp
                
                INCLUDEPATH = \
                    $$PWD/. \
                    $$PWD/external/include \
                    $$PWD/Gamma \
                    $$PWD/src
                
                DEPENDPATH = \
                    $$PWD/. \
                    $$PWD/external/include \
                    $$PWD/Gamma \
                    $$PWD/src
                
                #LibSndFile
                win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
                else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1d
                else:unix: LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
                
                INCLUDEPATH += $$PWD/external/lib_win64
                DEPENDPATH += $$PWD/external/lib_win64
                
                #PortAudio
                win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
                else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64d
                else:unix: LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
                
                INCLUDEPATH += $$PWD/external/lib_win64
                DEPENDPATH += $$PWD/external/lib_win64
                
                !include(../common.pri) {
                    error("common.pri not found")
                }
                
                
                aha_1980A 1 Reply Last reply
                1
                • YosemiteY Yosemite

                  I did get there eventually, I really appreciate the help @aha_1980 .

                  I'll try and state what was done clearly, to see if I understand it and to complete the thread. I included common.pri in the Gamma. pro file. I wrote the include path relative to the entire project folder, after printing $$PWD and seeing it was the top-level project folder.

                  There were other errors in the .pro files, especially a bunch of extra src files that were accidentally added while importing the subprojects, so here are the results.

                  Top-level .pro file:

                  TEMPLATE = subdirs
                  SUBDIRS = App Gamma
                  
                  App.depends = Gamma
                  
                  

                  common.pri file:

                  INCLUDEPATH += $$PWD/Gamma
                  DEPENDPATH += $$PWD/Gamma
                  

                  Gamma .pro file:

                  # Created by and for Qt Creator This file was created for editing the project sources only.
                  # You may attempt to use it for building too, by modifying this file here.
                  
                  QT       -= core gui
                  
                  TARGET = Gamma
                  
                  TEMPLATE = lib
                  
                  CONFIG+= staticlib
                  
                  DEFINES += GAMMA_LIBRARY
                  
                  HEADERS = \
                     $$PWD/external/include/portaudio.h \
                     $$PWD/external/include/sndfile.h \
                     $$PWD/Gamma/Access.h \
                     $$PWD/Gamma/Allocator.h \
                     $$PWD/Gamma/Analysis.h \
                     $$PWD/Gamma/arr.h \
                     $$PWD/Gamma/AudioIO.h \
                     $$PWD/Gamma/Config.h \
                     $$PWD/Gamma/Constants.h \
                     $$PWD/Gamma/Containers.h \
                     $$PWD/Gamma/Conversion.h \
                     $$PWD/Gamma/Delay.h \
                     $$PWD/Gamma/DFT.h \
                     $$PWD/Gamma/Domain.h \
                     $$PWD/Gamma/Effects.h \
                     $$PWD/Gamma/Envelope.h \
                     $$PWD/Gamma/FFT.h \
                     $$PWD/Gamma/Filter.h \
                     $$PWD/Gamma/FormantData.h \
                     $$PWD/Gamma/Gamma.h \
                     $$PWD/Gamma/gen.h \
                     $$PWD/Gamma/HRFilter.h \
                     $$PWD/Gamma/ipl.h \
                     $$PWD/Gamma/mem.h \
                     $$PWD/Gamma/Node.h \
                     $$PWD/Gamma/Noise.h \
                     $$PWD/Gamma/Oscillator.h \
                     $$PWD/Gamma/Print.h \
                     $$PWD/Gamma/pstdint.h \
                     $$PWD/Gamma/Recorder.h \
                     $$PWD/Gamma/rnd.h \
                     $$PWD/Gamma/SamplePlayer.h \
                     $$PWD/Gamma/Scheduler.h \
                     $$PWD/Gamma/scl.h \
                     $$PWD/Gamma/SoundFile.h \
                     $$PWD/Gamma/Spatial.h \
                     $$PWD/Gamma/Strategy.h \
                     $$PWD/Gamma/Sync.h \
                     $$PWD/Gamma/tbl.h \
                     $$PWD/Gamma/Thread.h \
                     $$PWD/Gamma/Timer.h \
                     $$PWD/Gamma/TransferFunc.h \
                     $$PWD/Gamma/Types.h \
                     $$PWD/Gamma/UnitMaps.h \
                     $$PWD/src/fftpack++.h \
                     $$PWD/gamma.h
                  
                  SOURCES = \
                     $$PWD/src/arr.cpp \
                     $$PWD/src/AudioIO.cpp \
                     $$PWD/src/Conversion.cpp \
                     $$PWD/src/DFT.cpp \
                     $$PWD/src/Domain.cpp \
                     $$PWD/src/FFT_fftpack.cpp \
                     $$PWD/src/fftpack++1.cpp \
                     $$PWD/src/fftpack++2.cpp \
                     $$PWD/src/Print.cpp \
                     $$PWD/src/Recorder.cpp \
                     $$PWD/src/Scheduler.cpp \
                     $$PWD/src/scl.cpp \
                     $$PWD/src/SoundFile.cpp \
                     $$PWD/src/Timer.cpp
                  
                  INCLUDEPATH = \
                      $$PWD/. \
                      $$PWD/external/include \
                      $$PWD/Gamma \
                      $$PWD/src
                  
                  DEPENDPATH = \
                      $$PWD/. \
                      $$PWD/external/include \
                      $$PWD/Gamma \
                      $$PWD/src
                  
                  #LibSndFile
                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1d
                  else:unix: LIBS += -L$$PWD/external/lib_win64/ -llibsndfile-1
                  
                  INCLUDEPATH += $$PWD/external/lib_win64
                  DEPENDPATH += $$PWD/external/lib_win64
                  
                  #PortAudio
                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64d
                  else:unix: LIBS += -L$$PWD/external/lib_win64/ -lportaudio_x64
                  
                  INCLUDEPATH += $$PWD/external/lib_win64
                  DEPENDPATH += $$PWD/external/lib_win64
                  
                  !include(../common.pri) {
                      error("common.pri not found")
                  }
                  
                  
                  aha_1980A Offline
                  aha_1980A Offline
                  aha_1980
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  Hi @Yosemite, glad you got it working and thanks for reporting back!

                  Regards

                  Qt has to stay free or it will die.

                  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