Search code examples
qtqt5qmake

Add an extension in a .pro variable


I'm trying to print a message with QMake but I have problems with extensions:

lib_name = $$1
message("test1: $$MYPATH/$$lib_name/src/$$lib_name.pri");
message("test2: $$MYPATH/$$lib_name/src/$$lib_name");

For some reason, test1 doesn't print the correct path. It just prints the path until src/. But, test2 is ok. It prints everything until the value in $$1.

Any workaround?


Solution

  • QMake supports variables (objects) with members that can be used using the dot . operator e.g. target.path for INSTALLS. So, in your case, $$lib_name.pri means that you're accessing the member pri of lib_name which doesn't exist so there's no output.

    You need to enclose variables in curly braces for QMake to distinguish them from the surrounding text i.e. $${lib_name}.pri.

    Example:

    message("test1: $$MYPATH/$$lib_name/src/$${lib_name}.pri");
    #                                       ~~~~~~~~~~~~
    

    For more examples of objects, see Adding Custom Target and Adding Compilers sections of QMake's Advanced Usage page.

    Here's another relevant SO thread: QMake - How to add and use a variable into the .pro file