Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. Getting a .pro file to work for both Visual Studio 2008 and Qt Creator
Forum Updated to NodeBB v4.3 + New Features

Getting a .pro file to work for both Visual Studio 2008 and Qt Creator

Scheduled Pinned Locked Moved Qt Creator and other tools
11 Posts 2 Posters 8.3k Views 1 Watching
  • 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.
  • G Offline
    G Offline
    goetz
    wrote on last edited by
    #2

    I have no idea about the actual problem. It's hard to debug without the complete files (what's in SalesCenter.pri and in qmlapplicationviewer/qmlapplicationviewer.pri?)

    Though, I spotted some small glitches in the project file:

    • UI_DIR and RCC_DIR should be set with "=" not, appended to with "+="n
    • There is a typo in "DEFINES += QT_LARGEILE_SUPPORT" (add an F for FILE)

    Also, you should capsulate the platform dependent portions in their own scope.

    http://www.catb.org/~esr/faqs/smart-questions.html

    1 Reply Last reply
    0
    • S Offline
      S Offline
      scarleton
      wrote on last edited by
      #3

      Wow, totally missed the existence of qmlapplicationviewer.pri. You will find that below along with the SalesCenter.pri.

      The SalesCenter.pri simply lists all the files which make up the C++ side of the application. It is a vs-addin concept, there is menu option to update the pri after adding or removing files via Visual Studio.

      I made the two corrections you pointed out and no change, VS2008 runs fine, Qt Creator comes up with a blank screen and an error message:

      file:///D:/MSDev/PhotoParata/Qt/Debug/qml/SalesCenter/main.qml: File not found

      The folders layout is the default layout that Qt Creator created for me:

      D:MSDevPhotoParataQtSalesCenter is the <solution folder> where the Qt's .pro and Visual Studio .vcproj/.sln files are found.

      All the qml files are in <solution folder>\qml\SalesCenter

      It looks like Qt Creator is putting the EXE in the wrong folder, it is placing it in <solution folder>..\Debug, where as VS2008 is placing the exe (and object files) in <solution folder>\Debug.

      Some how when running the code from with in VS2008, it knows to find the qml files in <solution folder>qmlSalesCenter, where Qt Creator is looking in <solution folder>..\Debug\qml\SalesCenter.

      The post is too long, so I will follow up in the next post with the files...

      1 Reply Last reply
      0
      • S Offline
        S Offline
        scarleton
        wrote on last edited by
        #4

        qmlapplicationviewer.pri
        @# checksum 0xb7ef version 0x2000a
        QT += declarative

        SOURCES += $$PWD/qmlapplicationviewer.cpp
        HEADERS += $$PWD/qmlapplicationviewer.h
        INCLUDEPATH += $$PWD

        defineTest(minQtVersion) {
        maj = $$1
        min = $$2
        patch = $$3
        isEqual(QT_MAJOR_VERSION, $$maj) {
        isEqual(QT_MINOR_VERSION, $$min) {
        isEqual(QT_PATCH_VERSION, $$patch) {
        return(true)
        }
        greaterThan(QT_PATCH_VERSION, $$patch) {
        return(true)
        }
        }
        greaterThan(QT_MINOR_VERSION, $$min) {
        return(true)
        }
        }
        return(false)
        }

        contains(DEFINES, QMLJSDEBUGGER) {
        CONFIG(debug, debug|release) {
        !minQtVersion(4, 7, 1) {
        warning()
        warning("Disabling QML debugging:")
        warning()
        warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.")
        warning("This library requires Qt 4.7.1 or newer.")
        warning()
        DEFINES -= QMLJSDEBUGGER
        } else:isEmpty(QMLJSDEBUGGER_PATH) {
        warning()
        warning("Disabling QML debugging:")
        warning()
        warning("Debugging QML requires the qmljsdebugger library that ships with Qt Creator.")
        warning("Please specify its location on the qmake command line, eg")
        warning(" qmake -r QMLJSDEBUGGER_PATH=$CREATORDIR/share/qtcreator/qmljsdebugger")
        warning()
        DEFINES -= QMLJSDEBUGGER
        } else {
        include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri)
        }
        } else {
        DEFINES -= QMLJSDEBUGGER
        }
        }

        defineTest(qtcAddDeployment) {
        for(deploymentfolder, DEPLOYMENTFOLDERS) {
        item = item$${deploymentfolder}
        itemsources = $${item}.sources
        $$itemsources = $$eval($${deploymentfolder}.source)
        itempath = $${item}.path
        $$itempath= $$eval($${deploymentfolder}.target)
        export($$itemsources)
        export($$itempath)
        DEPLOYMENT += $$item
        }

        MAINPROFILEPWD = $$PWD

        symbian {
        ICON = $${TARGET}.svg
        TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
        contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -lcone
        contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices
        } else:win32 {
        copyCommand =
        for(deploymentfolder, DEPLOYMENTFOLDERS) {
        source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
        source = $$replace(source, /, )
        sourcePathSegments = $$split(source, )
        target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
        target = $$replace(target, /, )
        !isEqual(source,$$target) {
        !isEmpty(copyCommand):copyCommand += &&
        copyCommand += $(COPY_DIR) "$$source" "$$target"
        }
        }
        !isEmpty(copyCommand) {
        copyCommand = echo Copying application data... && $$copyCommand
        copydeploymentfolders.commands = $$copyCommand
        first.depends = $(first) copydeploymentfolders
        export(first.depends)
        export(copydeploymentfolders.commands)
        QMAKE_EXTRA_TARGETS += first copydeploymentfolders
        }
        } else:unix {
        maemo5 {
        installPrefix = /opt/usr
        desktopfile.path = /usr/share/applications/hildon
        } else {
        installPrefix = /usr
        desktopfile.path = /usr/share/applications
        copyCommand =
        for(deploymentfolder, DEPLOYMENTFOLDERS) {
        source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
        source = $$replace(source, , /)
        macx {
        target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
        } else {
        target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
        }
        target = $$replace(target, , /)
        sourcePathSegments = $$split(source, /)
        targetFullPath = $$target/$$last(sourcePathSegments)
        !isEqual(source,$$targetFullPath) {
        !isEmpty(copyCommand):copyCommand += &&
        copyCommand += $(MKDIR) "$$target"
        copyCommand += && $(COPY_DIR) "$$source" "$$target"
        }
        }
        !isEmpty(copyCommand) {
        copyCommand = echo Copying application data... && $$copyCommand
        copydeploymentfolders.commands = $$copyCommand
        first.depends = $(first) copydeploymentfolders
        export(first.depends)
        export(copydeploymentfolders.commands)
        QMAKE_EXTRA_TARGETS += first copydeploymentfolders
        }
        }
        for(deploymentfolder, DEPLOYMENTFOLDERS) {
        item = item$${deploymentfolder}
        itemfiles = $${item}.files
        $$itemfiles = $$eval($${deploymentfolder}.source)
        itempath = $${item}.path
        $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target)
        export($$itemfiles)
        export($$itempath)
        INSTALLS += $$item
        }
        icon.files = $${TARGET}.png
        icon.path = /usr/share/icons/hicolor/64x64/apps
        desktopfile.files = $${TARGET}.desktop
        target.path = $${installPrefix}/bin
        export(icon.files)
        export(icon.path)
        export(desktopfile.files)
        export(desktopfile.path)
        export(target.path)
        INSTALLS += desktopfile icon target
        }

        export (ICON)
        export (INSTALLS)
        export (DEPLOYMENT)
        export (TARGET.EPOCHEAPSIZE)
        export (TARGET.CAPABILITY)
        export (LIBS)
        export (QMAKE_EXTRA_TARGETS)
        }
        @

        SalesCenter.pri
        @# ----------------------------------------------------

        This file is generated by the Qt Visual Studio Add-in.

        ------------------------------------------------------

        HEADERS +=
        ./DBManager.h
        ./FavoriteSqlModel.h
        ./stdafx.h
        ./StationManager.h
        ./SystemSettings.h

        SOURCES +=
        ./DBManager.cpp
        ./FavoriteSqlModel.cpp
        ./main.cpp
        ./stdafx.cpp
        ./StationManager.cpp
        ./SystemSettings.cpp

        OTHER_FILES +=
        @

        1 Reply Last reply
        0
        • G Offline
          G Offline
          goetz
          wrote on last edited by
          #5

          [quote author="scarleton" date="1296431511"]Wow, totally missed the existence of qmlapplicationviewer.pri. You will find that below along with the SalesCenter.pri.

          The SalesCenter.pri simply lists all the files which make up the C++ side of the application. It is a vs-addin concept, there is menu option to update the pri after adding or removing files via Visual Studio.

          I made the two corrections you pointed out and no change, VS2008 runs fine, Qt Creator comes up with a blank screen and an error message:

          file:///D:/MSDev/PhotoParata/Qt/Debug/qml/SalesCenter/main.qml: File not found

          The folders layout is the default layout that Qt Creator created for me:

          D:MSDevPhotoParataQtSalesCenter is the <solution folder> where the Qt's .pro and Visual Studio .vcproj/.sln files are found.

          All the qml files are in <solution folder>\qml\SalesCenter

          It looks like Qt Creator is putting the EXE in the wrong folder, it is placing it in <solution folder>..\Debug, where as VS2008 is placing the exe (and object files) in <solution folder>\Debug.

          Some how when running the code from with in VS2008, it knows to find the qml files in <solution folder>qmlSalesCenter, where Qt Creator is looking in <solution folder>..\Debug\qml\SalesCenter.

          The post is too long, so I will follow up in the next post with the files...[/quote]

          Did you to change the shadow build settings on the project view/build settings? I would guess the "wrong" debug folder is set there. The other solution would be to add a deployment step that copies all the necessary files to the right folder.

          http://www.catb.org/~esr/faqs/smart-questions.html

          1 Reply Last reply
          0
          • S Offline
            S Offline
            scarleton
            wrote on last edited by
            #6

            To the best of my knowledge I only changed to pro file. Is there some way to set the shadow build settings in the pro file? If not, it would be nice if you could.

            Sam

            1 Reply Last reply
            0
            • G Offline
              G Offline
              goetz
              wrote on last edited by
              #7

              The shadow build feature is enabled in Qt Creator. It's achieved by creating the dir, change directory into that new dir and calling qmake there. This leaves the Makefile in the shadow build dir. This all is handled by Creator internally, so no tweaking by your side.

              Did you try to disable the shadow builds in Creator at all (Project view, build settings, uncheck the checkbox).

              http://www.catb.org/~esr/faqs/smart-questions.html

              1 Reply Last reply
              0
              • S Offline
                S Offline
                scarleton
                wrote on last edited by
                #8

                I will give that a try.

                What I don't understand is:

                The pro file worked fine in Qt Creator

                The pro file was changed to work in VS2008

                The pro file stopped working in Qt Creator.

                Why do I now need to go into the Qt Creator project settings to make the change, why can't the changes be made in the pro file?

                1 Reply Last reply
                0
                • G Offline
                  G Offline
                  goetz
                  wrote on last edited by
                  #9

                  It was the same Creator instance (same computer) or the same project dir? If not - the build settings etc. are on a project/directory base. They are not saved in the .pro file.

                  It definitely works cross platform, we do it on our project here (Mac with Creator, Windows with Visual Studio, sometimes Linux with qmake on the command line).

                  In such weird situations I would suggest to setup a simple hello world project, make it work on both IDEs. Add some QML stuff afterwards, make it work on both IDEs again and the adapt that settings to your actual project. This way you get the distorting stuff out of the way and you can focus on the project configuration.

                  http://www.catb.org/~esr/faqs/smart-questions.html

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    scarleton
                    wrote on last edited by
                    #10

                    I disabled the shadow build and nothing changed, it still builds to the wrong folder:

                    D:\MSDev\PhotoParata\Qt\Debug,

                    rather than where VS2005 builds it:

                    D:\MSDev\PhotoParata\Qt\SalesCenter\debug

                    I still get a white screen and the error message:

                    @file:///D:/MSDev/PhotoParata/Qt/Debug/qml/SalesCenter/main.qml: File not found@

                    There is some change that needs to happen in the pro file, but I don't have a clue as to what it might be. I am hoping a Nokia developer will read this post and chime in with a solution:)

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      goetz
                      wrote on last edited by
                      #11

                      [quote author="Volker" date="1296483306"]In such weird situations I would suggest to setup a simple hello world project, make it work on both IDEs. Add some QML stuff afterwards, make it work on both IDEs again and the adapt that settings to your actual project. This way you get the distorting stuff out of the way and you can focus on the project configuration.[/quote]

                      This is what I really would do now...

                      http://www.catb.org/~esr/faqs/smart-questions.html

                      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