How to add macro for the LIBS in the .PRO file
-
I am using two library one for windows and another for Linux. Now i want to define an macro for both of them such that while i run my application in windows i can add Windows Macro and vice versa.
For example: DEFINES += "Windows="LIBS += -L$$PWD/release/ -ldata""
DEFINES += "Linux="LIBS += -L$$PWD/release/ -lLinuxdata""LIBS += Windows
Like this anything is possible
-
Hi! You can add libs like this:
unix { LIBS += -L"$$PWD/release/" -lLinuxdata } win32 { LIBS += -L"$$PWD/release/" -ldata }
-
@ManiRon
If you are adding lib viaadd Library
from Qt Creator it gives option for different platforms. something like this.win32:CONFIG(release, debug|release): LIBS += -L$$PWD/Qwt_Plot/lib/ -lqwt else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/Qwt_Plot/lib/ -lqwtd else:unix:!macx: LIBS += -L$$PWD/Qwt_Plot/lib/ -lqwt
Or you can add the code manually in the .pro file
-
Why do you want to create your macro if it already done by
Qt
?Code:
unix { LIBS += -L"$$PWD/release/" -lLinuxdata } win32 { LIBS += -L"$$PWD/release/" -ldata }
unix
will be used onUnix
systems, it includes theLinux
.
win32
will be used onWindows
systems.You can define your macro, for example:
DEFINES += MY_MACRO=true
I can only think that you want something like that:
DEFINES += MY_LIB_PATH="$$PWD/release/"
So you can define the one path to libraries and use it:
unix { LIBS += -L"$$MY_LIB_PATH" -lLinuxdata } win32 { LIBS += -L"$$MY_LIB_PATH" -ldata }
But you still need
unix/win32
checks. -
For xenomai and fedora what should i define
for example:for linux : unix, Windows: win32, similarly for Fedora : ?,
and Xenomai : ? -
For
Xenomai
andFedora
should workunix
and forWindows
-win32
.From the Qt documentation:
Platform Scope Values In addition to the win32, macx, and unix values used in many scope conditions, various other built-in platform and compiler-specific values can be tested with scopes. These are based on platform specifications provided in Qt's mkspecs directory. For example, the following lines from a project file show the current specification in use and test for the linux-g++ specification: message($$QMAKESPEC) linux-g++ { message(Linux) } You can test for any other platform-compiler combination as long as a specification exists for it in the mkspecs directory. The scope unix is true for the Symbian platform.
Official Qt docs: http://doc.qt.io/archives/qt-4.8/qmake-advanced-usage.html
-
@Cobra91151 Sir i am trying to add
uinx{
LIBS+= -L$$PWD/.../lib/linus/-lData
LIBS+= -L$$PWD/.../lib/Xenomai/-lData1 -lrtdm -lrt -lxenomai
}I am adding the linux and xenomai library and trying to compile . but it throws error. As it detects the linux library and it couldnt find the xenomai library it throws error.
My question is i want to define all my library and based on the platform or OS i am running it should detect its particular library.
For example : linux, xenomai, windiows. These are the platforms i am running the application. Why i ask this is because every time i have to add the corresponding library and compile it and the run the application . So is there any solution for this? -
@ManiRon said in How to add macro for the LIBS in the .PRO file:
@Cobra91151 Sir i am trying to add
uinx{
LIBS+= -L$$PWD/.../lib/linus/-lData
LIBS+= -L$$PWD/.../lib/Xenomai/-lData1 -lrtdm -lrt -lxenomai
}I am adding the linux and xenomai library and trying to compile . but it throws error. As it detects the linux library and it couldnt find the xenomai library it throws error.
My question is i want to define all my library and based on the platform or OS i am running it should detect its particular library.
For example : linux, xenomai, windiows. These are the platforms i am running the application. Why i ask this is because every time i have to add the corresponding library and compile it and the run the application . So is there any solution for this?First all of all, you typed
uinx
, it should beunix
, so the errors might be with it. Secondly,Xenomai
is built with theLinux
kernel, so in your case it will load both libs.So, you have to be more specific with your checks, read my post above:
In addition to the win32, macx, and unix values used in many scope conditions, various other built-in platform and compiler-specific values...
-
for xenomai what should i do sir?
While giving unix it runs the library for linux and if i want to do the same for xenomai what should i specify?
And i want to know where this message($$QMAKESPEC) will be displayed?
-
Xenomai
should have something, I useWindows
OS, so I don't know exactly.message($$QMAKESPEC)
will be displayed in theGeneral Messages
in theQt Creator
. Check the outputmessage($$QMAKESPEC)
and reply. I will try to help you. -
@Cobra91151 Ok sir
-
@ManiRon said in How to add macro for the LIBS in the .PRO file:
@ManiRon
I tried with windows it returned win32-g++ ?Ok. So you can use it on
Windows
, but you have to check it withXenomai
. By the way,win32-g++
means that you useMinGW
compiler. Reply when you get the output forXenomai
. -
@Cobra91151 ok Sir
-
I have a doubt?
-
i generated a code in .pro file as
win32-g++{
LIBS += path
}
linux-g++ {
LIBS += path
}i am creating a bundle with the .exe and the required files and if i run this in a PC which does not have QT will it work
-
@ManiRon said in How to add macro for the LIBS in the .PRO file:
I have a doubt?
@ManiRon said in How to add macro for the LIBS in the .PRO file:
i generated a code in .pro file as
win32-g++{
LIBS += path
}
linux-g++ {
LIBS += path
}i am creating a bundle with the .exe and the required files and if i run this in a PC which does not have QT will it work
You have doubt about what? Is
linux-g++
scope condition fromXenomai
output?Also, you have to provide all the necessary
Qt
libs if theQt
is not static (on thePC
which does not haveQt
) otherwise it wont work. For example, forWindows
, you have to runwindeployqt.exe
to getQt
shared libs.Official docs about the deployment for
Windows
: http://doc.qt.io/qt-5/windows-deployment.html -
So, you should have something like this in the
pro
file:TARGET = TestApp #Your executable filename without the extension win32-g++ { LIBS += path QMAKE_POST_LINK = $$(QTDIR)/bin/windeployqt.exe $$shell_quote($$DESTDIR/$$shell_quote($$TARGET).exe) --no-compiler-runtime }
This will add one more build step to the project, but it will help to deploy all the necessary
Qt
libs. By the way, it will work only forWindows
deployment andshared
libsQt
version.Linux
deploymentQt
docs here: http://doc.qt.io/qt-5/linux-deployment.html