I use similar approach, but I do

qmake CONFIG+=sailfish

and then I can check for it in the .pro file like this:

sailfish {
    DEFINES += Q_OS_SAILFISH
    ...
}

Looks shorter and cleaner to me :-)

On 03.01.2014 12:21, Timur Kristóf wrote:
Hi,

What Thomas said makes sense, I just want to add one more little thing.
You can, in the .spec file, add stuff to qmake, like this define. This
would make the necessary code shorter and as a bonus, it gives you
something you can even ifdef in C++.

# spec file
qmake DEFINES+=IS_SAILFISH_OS

# pro file
contains(DEFINES, IS_SAILFISH_OS) {
   ...
}

// C++ file
#if defined(IS_SAILFISH_OS)
   ...
#endif

Cheers,
Timur



Timur



On Thu, Jan 2, 2014 at 8:44 PM, Thomas Perl <th.p...@gmail.com
<mailto:th.p...@gmail.com>> wrote:

    Hi,

    On 02 Jan 2014, at 20:25, Sven Putze <sailfish...@hardcodes.de
    <mailto:sailfish...@hardcodes.de>> wrote:
     > There are ways to check for the OS in QtCreator .PRO files, e.g. like
     >
     > unix:symbian{ # do stuff}
     > unix:maemo5{ # do stuff}
     > macx{ # do stuff}
     > win32{ # do stuff}
     >
     > Is there a way to check (or control to be more precise) that some
    directives are only used when compiling on the MerSDL VM?
     > Just checking for the presence of "sailfishapp" does not work,
    because that is defined for any OS.


    In general, it might just be easier (and more maintainable) to have
    a per-platform .pro file for your project and not litter your .pro
    file with lots of conditionals (been there, done that - it will
    become hard to read, understand and maintain as the number of
    platforms grows). If there’s a lot of common things that you need in
    each file, put that in a .pri file and include it in each
    platform-specific .pro file. Then, in the sailfish .spec, you can
    call qmake on the sailfish-specific project file, in the Maemo 5
    debian/rules script, you call qmake on the maemo5 .pro file, etc…

    With that said, you can use packagesExist[1] to do sailfish-specific
    things if you are convinced that a single .pro file really is the
    way to go:

    packagesExist(sailfishapp) { .. do stuff .. }

    Alternatively, set an environment variable in the qmake call in the
    .spec file and check for that variable in the .pro file:

    # In the .spec file:
    IS_SAILFISH_OS=1 qmake

    # In the .pro file:
    IS_SAILFISH_OS = $$(IS_SAILFISH_OS)
    contains(IS_SAILFISH_OS, 1) {
         .. do stuff ..
    }


    HTH :)
    Thomas

    [1]
    
http://qt-project.org/doc/qt-4.8/qmake-function-reference.html#packagesexist-packages

--
With best regards,
Oleksii Serdiuk

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to