Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. Issues compiling c files in Qt creator
Forum Updated to NodeBB v4.3 + New Features

Issues compiling c files in Qt creator

Scheduled Pinned Locked Moved Installation and Deployment
28 Posts 8 Posters 21.8k 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.
  • B Offline
    B Offline
    benardmens
    wrote on last edited by
    #3

    Hi Denis,

    Thanks for the quick reply. Can you please give me an example of how to link a manual makefile to a pro file? Also i thought the #ifdef __cplusplus section would stop any compiler issues?

    Thanks again

    1 Reply Last reply
    0
    • T Offline
      T Offline
      tobias.hunger
      wrote on last edited by
      #4

      Why a base64 library? Qt can de/encode base64 all by itself (QByteArray::fromBase64 and toBase64).

      1 Reply Last reply
      0
      • D Offline
        D Offline
        DenisKormalev
        wrote on last edited by
        #5

        You can add it as custom target to PRE_TARGETDEPS variable I think.

        1 Reply Last reply
        0
        • B Offline
          B Offline
          benardmens
          wrote on last edited by
          #6

          [quote author="Tobias Hunger" date="1291577543"]Why a base64 library? Qt can de/encode base64 all by itself (QByteArray::fromBase64 and toBase64).[/quote]

          Hi Toby,
          Thanks for the reply, that class is part of the source of a library that I am trying to use. It builds fine when running a normal gcc session from the command line so I was a bit surprised when I run into the issue. I'm not a c++ expert by any stretch ,just learning as I go along, but if I understand what you are suggesting it means that I have to go through the whole library replacing the instances of base64 calls with the QByteArray calls, and I don't know how that will affect the rest of the library which was why I wanted to see if there was something I should be doing instead.

          Thanks again

          1 Reply Last reply
          0
          • B Offline
            B Offline
            benardmens
            wrote on last edited by
            #7

            [quote author="Denis Kormalev" date="1291577718"]You can add it as custom target to PRE_TARGETDEPS variable I think.
            [/quote]

            Thanks for that Denis, will try that right away and let you know how it goes.

            1 Reply Last reply
            0
            • T Offline
              T Offline
              tobias.hunger
              wrote on last edited by
              #8

              benardmens: Oh, if this is part of 3rd party code then forget my comment.

              Many people seem to not know that Qt can de/encode base64 all by itself... I have seen more than one piece of code where some developer dragged in a 3rd party library just to write some bytes in base64 encoding.

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

                Unfortunately I cannot download the files (too many downloads in parallel). So, sorry, can't help with this.

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

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  benardmens
                  wrote on last edited by
                  #10

                  [quote author="Denis Kormalev" date="1291577718"]You can add it as custom target to PRE_TARGETDEPS variable I think.
                  [/quote]

                  Hi Denis, tried that but it didn't work. The way I understood it is to add a custom Makefile argument to the PRE_TARGETDEPS? Thanks

                  [edit: quoe fixed / Denis Kormalev]

                  1 Reply Last reply
                  0
                  • B Offline
                    B Offline
                    benardmens
                    wrote on last edited by
                    #11

                    [quote author="Volker" date="1291582514"]Unfortunately I cannot download the files (too many downloads in parallel). So, sorry, can't help with this.[/quote]

                    Hi Volker,
                    These are some new links which shouldnt give the same problem,

                    http://www.mediafire.com/?z13ki4t48iqs8ke
                    http://www.mediafire.com/?nq14e8527bj4l7i
                    http://www.mediafire.com/?1a23rh9ngxpe3dm

                    I would appreciate any help as I've been trying to get this working for a day now. Thanks again

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      DenisKormalev
                      wrote on last edited by
                      #12

                      benardmens, can you show your .pro file (please post its content here in @ tags)?

                      1 Reply Last reply
                      0
                      • X Offline
                        X Offline
                        xsacha
                        wrote on last edited by
                        #13

                        You could put the files inside a zip or tar. Makes it easier to upload and download (for future reference).

                        Theres a site called wikiupload that doesn't have a time delay to download.

                        • Sacha
                        1 Reply Last reply
                        0
                        • B Offline
                          B Offline
                          benardmens
                          wrote on last edited by
                          #14

                          [quote author="Denis Kormalev" date="1291620464"]benardmens, can you show your .pro file (please post its content here in (at) tags)?[/quote]

                          Hi Denis,
                          I just got a work around to work by building it as a library and adding it manually to the libs. However , i would still like to be able to understand how to do it properly if possible.

                          The current .pro file is below as requested

                          @
                          #-------------------------------------------------

                          Project created by QtCreator 2010-12-05T20:36:45

                          #-------------------------------------------------

                          QT += core gui

                          TARGET = PolicyFrameworkSpy
                          TEMPLATE = app

                          unix:LIBS +=-L/usr/include/libxml2
                          /usr/local/lib/libhaggle.a

                          unix:INCLUDEPATH +=/usr/local/include/libhaggle/
                          /usr/include/libxml2 \

                          QMAKE_CFLAGS_DEBUG += -std=gnu99 -O2
                          QMAKE_LFLAGS += -lxml2 -lz -lpthread -licucore -lm
                          SOURCES += main.cpp
                          PolicyFramework.cpp

                          HEADERS += PolicyFramework.h

                          FORMS += PolicyFramework.ui
                          @

                          And the one I was having issues with

                          @
                          #-------------------------------------------------

                          Project created by QtCreator 2010-12-05T16:43:38

                          #-------------------------------------------------

                          QT += core gui

                          TARGET = PolicyFrameworkDesktop
                          TEMPLATE = app

                          INCLUDEPATH +=/QTDev/PolicyFrameworkDesktop/libhaggle

                          SOURCES += main.cpp
                          PolicyFrameworkSpy.cpp
                          libhaggle/base64.c

                          HEADERS += PolicyFrameworkSpy.h
                          libhaggle/base64.h

                          FORMS += PolicyFrameworkSpy.ui
                          @

                          1 Reply Last reply
                          0
                          • B Offline
                            B Offline
                            benardmens
                            wrote on last edited by
                            #15

                            [quote author="xsacha" date="1291620625"]You could put the files inside a zip or tar. Makes it easier to upload and download (for future reference).

                            Theres a site called wikiupload that doesn't have a time delay to download.[/quote]

                            Thanks for that, I will keep that in mind for later. Thanks for the help everyone. This is one of the most responsive forums I've ever been on!

                            1 Reply Last reply
                            0
                            • D Offline
                              D Offline
                              DenisKormalev
                              wrote on last edited by
                              #16

                              benardmens, try to add something like this
                              @
                              someLib.target = someLibBuild
                              someLib.commands = cd path/to/lib && make
                              QMAKE_EXTRA_TARGETS += someLib
                              PRE_TARGETDEPS += someLibBuild
                              @

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

                                [quote author="benardmens" date="1291619302"]
                                These are some new links which shouldnt give the same problem,

                                I would appreciate any help as I've been trying to get this working for a day now. Thanks again[/quote]

                                I put base64.h and and base64.c in a small project and could compile it and use its base64_encode_alloc in a C++ program.

                                qmake calls g++ or gcc depending on the file extension (cpp or c). I used no pre targets or libs or something like that.

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

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  maciej
                                  wrote on last edited by
                                  #18

                                  Hi all,
                                  1st thing is that you are not using class. There is no such thing in C as class or object!
                                  Your problem is that you're using qt tools to compile (.pro file & qmake) which generate Makefiles only for C++. If you want to compile C code with QtCreator you should start using "cmake":http://cmake.org/ (which is supported by QtCreator) instead of .pro files.

                                  Earth is a beta site.

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

                                    Not quite true.

                                    @
                                    HEADERS += plain.h base64.h
                                    SOURCES += main.cpp base64.c
                                    @

                                    This calls g++ (GCC in C++ mode) on main.cpp and gcc (GCC in C mode) on base64.c. The decision is made on the file extension (.cpp or .c). One can tweak that with setting QMAKE_EXT_CPP. The default is .cpp .cc .cxx .C

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

                                    1 Reply Last reply
                                    0
                                    • G Offline
                                      G Offline
                                      GordonSchumacher
                                      wrote on last edited by
                                      #20

                                      Actually, there's an even better way:

                                      Top-level .pro file:
                                      @
                                      TEMPLATE = subdirs

                                      someLib.subdir = someLib
                                      someLib.makefile = someLib.mak # This may not be named "Makefile"!
                                      someLib.target = $${QMAKE_PREFIX_SHLIB}someLib.${QMAKE_EXTENSION_SHLIB}

                                      SUBDIRS = someLib someApp
                                      @

                                      someLib/someLib.mak:
                                      @
                                      libsomeLib.so:
                                      gcc foo.c -o libsomeLib.so

                                      clean:
                                      rm -f libsomeLib.so

                                      distclean: clean

                                      .PHONY: clean distclean
                                      @

                                      Note that it will create a bogus, non-functional "someLib/Makefile", but you may simply ignore it.

                                      I don't believe this is documented, but it's been in qmake for quite a long time (I want to say at least since 4.3.x, but don't quote me on that).

                                      1 Reply Last reply
                                      0
                                      • B Offline
                                        B Offline
                                        benardmens
                                        wrote on last edited by
                                        #21

                                        [quote author="GordonSchumacher" date="1291831448"]Actually, there's an even better way:

                                        Top-level .pro file:
                                        @
                                        TEMPLATE = subdirs

                                        someLib.subdir = someLib
                                        someLib.makefile = someLib.mak # This may not be named "Makefile"!
                                        someLib.target = $${QMAKE_PREFIX_SHLIB}someLib.${QMAKE_EXTENSION_SHLIB}

                                        SUBDIRS = someLib someApp
                                        @

                                        someLib/someLib.mak:
                                        @
                                        libsomeLib.so:
                                        gcc foo.c -o libsomeLib.so

                                        clean:
                                        rm -f libsomeLib.so

                                        distclean: clean

                                        .PHONY: clean distclean
                                        @

                                        Note that it will create a bogus, non-functional "someLib/Makefile", but you may simply ignore it.

                                        I don't believe this is documented, but it's been in qmake for quite a long time (I want to say at least since 4.3.x, but don't quote me on that).[/quote]

                                        [quote author="Volker" date="1291641995"]Not quite true.

                                        @
                                        HEADERS += plain.h base64.h
                                        SOURCES += main.cpp base64.c
                                        @

                                        This calls g++ (GCC in C++ mode) on main.cpp and gcc (GCC in C mode) on base64.c. The decision is made on the file extension (.cpp or .c). One can tweak that with setting QMAKE_EXT_CPP. The default is .cpp .cc .cxx .C[/quote]

                                        Thanks for all the suggestions, I was unable to go back to the project because of work but I will try the suggestions right away and get back to you.

                                        Thanks everyone!

                                        1 Reply Last reply
                                        0
                                        • B Offline
                                          B Offline
                                          benardmens
                                          wrote on last edited by
                                          #22

                                          Hi all,

                                          I've tried the options without success so I've uploaded the project if some one could kindly help me out with where I'm going wrong. The link is below

                                          http://www.wikiupload.com/3XHWP6JG2GXMU1D

                                          Thanks again everyone for the help so far

                                          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