Impossible Generate Executable whit its dependecy
-
Hello,
I'm currently trying to generate the executable of my project, but I have some issues.
I don't know how to change the executable location during the build.I'm working on a very strange project that has multiple .pro files that are built into multiples .exe
When I try to move the build folder, it does move some files, mostly the moc_(...).cpp file, but I don't generate any exe files that I selected. Instead, it generates in a "bin" folder in the same folder as the .pro
Additionally, I don't know if it's usual, but there is something like 18 .pro files, calling each other, and it looks like someone who really over engineering what he wanted to do.
I don't even know how to explain the issue or what to exactly ask, because all tutorial just have to select a folder on the project configuration and it work, but not for me...
-
Hi,
While 18 is large, it's not completely extraordinary (just take the Qt5 sources for an example of large qmake based project).
However
.pro
files calling each other does not sound right. For "multi-projects" project, there is the subdirs template. I think you should check that as a starting point. -
Hi,
While 18 is large, it's not completely extraordinary (just take the Qt5 sources for an example of large qmake based project).
However
.pro
files calling each other does not sound right. For "multi-projects" project, there is the subdirs template. I think you should check that as a starting point.@SGaist
I'm clearly not an expert on the subject, but I think the documentation you gave can help me.Looking at it i'v managed to understand a bit what was done across the different .pro
And i noticed that every single one had :
Include(common.pro)
??
TEMPLATE = subdirs
like the exemples on the wikiAnd looking at that common i don't really know what it mean.
#DEFINES += NO_GRAPHVIZ INCLUDEPATH+=$$PWD #DEPENDPATH += $$PWD #include($$PWD/config/config.pri) DESTDIR = $$PWD/bin ROOTDIR = $$PWD OBJECTS_DIR = $$ROOTDIR/objects/$$TARGET INCLUDEPATH +=$$ROOTDIR/../boost/ unix:INCLUDEPATH+=/usr/include/graphviz CONFIG += c++11 QT += core widgets gui svg LIBS += -Wl,--start-group for(dep, DEPENDENCY_LIBRARIES) { LIBS += -L$$ROOTDIR/lib/ -l$${dep} PRE_TARGETDEPS += $$ROOTDIR/lib/lib$${dep}.a } LIBS += -Wl,--end-group QMAKE_CXXFLAGS += -Wno-unused-local-typedefs
I have the impression it's ovewriting every configuration I try to make to generate an executable by redirecting everithing to the bin folder on the same path as it self
And it don't generate any dll and generate copy all the source code under the name
moc_xxx.cpp
... i'm really stuckps: the .pro file i use to build and execute my project
#------------------------------------------------- # # Project created by QtCreator 2013-06-28T11:05:37 # #------------------------------------------------- include(common.pro) TEMPLATE = subdirs CONFIG += ordered SUBDIRS += models SUBDIRS += controllers SUBDIRS += undo SUBDIRS += utils SUBDIRS += addons SUBDIRS += config SUBDIRS += cppViews #SUBDIRS += modelsTest #SUBDIRS += undoTest SUBDIRS += application
-
@SGaist
I'm clearly not an expert on the subject, but I think the documentation you gave can help me.Looking at it i'v managed to understand a bit what was done across the different .pro
And i noticed that every single one had :
Include(common.pro)
??
TEMPLATE = subdirs
like the exemples on the wikiAnd looking at that common i don't really know what it mean.
#DEFINES += NO_GRAPHVIZ INCLUDEPATH+=$$PWD #DEPENDPATH += $$PWD #include($$PWD/config/config.pri) DESTDIR = $$PWD/bin ROOTDIR = $$PWD OBJECTS_DIR = $$ROOTDIR/objects/$$TARGET INCLUDEPATH +=$$ROOTDIR/../boost/ unix:INCLUDEPATH+=/usr/include/graphviz CONFIG += c++11 QT += core widgets gui svg LIBS += -Wl,--start-group for(dep, DEPENDENCY_LIBRARIES) { LIBS += -L$$ROOTDIR/lib/ -l$${dep} PRE_TARGETDEPS += $$ROOTDIR/lib/lib$${dep}.a } LIBS += -Wl,--end-group QMAKE_CXXFLAGS += -Wno-unused-local-typedefs
I have the impression it's ovewriting every configuration I try to make to generate an executable by redirecting everithing to the bin folder on the same path as it self
And it don't generate any dll and generate copy all the source code under the name
moc_xxx.cpp
... i'm really stuckps: the .pro file i use to build and execute my project
#------------------------------------------------- # # Project created by QtCreator 2013-06-28T11:05:37 # #------------------------------------------------- include(common.pro) TEMPLATE = subdirs CONFIG += ordered SUBDIRS += models SUBDIRS += controllers SUBDIRS += undo SUBDIRS += utils SUBDIRS += addons SUBDIRS += config SUBDIRS += cppViews #SUBDIRS += modelsTest #SUBDIRS += undoTest SUBDIRS += application
-
Qmake is via a terminal ? I run MiniGW, and even when i try to run it on a clean foler it got build on the same folder
Some files are generated on the folder i selected, like some makefiles and qmake.stash, but nothing else, and everithing is in the midle of the source code
I'm not the one who made that, it's somthing from 2013 and no one is still around to explain how they managed to generate a working executable
-
Qmake is via a terminal ? I run MiniGW, and even when i try to run it on a clean foler it got build on the same folder
Some files are generated on the folder i selected, like some makefiles and qmake.stash, but nothing else, and everithing is in the midle of the source code
I'm not the one who made that, it's somthing from 2013 and no one is still around to explain how they managed to generate a working executable
@AntGP said in Impossible Generate Executable whit its dependecy:
everithing is in the midle of the source code
Where is your build folder?
After calling qmake you need to start the actual build (by calling make for example). -
the build folder is in the midle of all other folder. i'v highlighted the source code folders
and i build using thoose buttons on Qt creator :And whatever i change in the project tab, it allways build here, not on the folder i select
-
the build folder is in the midle of all other folder. i'v highlighted the source code folders
and i build using thoose buttons on Qt creator :And whatever i change in the project tab, it allways build here, not on the folder i select
@AntGP said in Impossible Generate Executable whit its dependecy:
and i build using thoose buttons on Qt creator
Sorry have to say, this answer is... something... creative :D
@AntGP Don't worry about the structure or the multiple
*.pro
files. It's common for larger projects with submodules, which need some extra build/install configuration...
Theinclude
includes other.pro
files, so you can share variables and functions/macros. That's why there is acommon.pro
which is included in (almost) every other pro (-ject).@AntGP said in Impossible Generate Executable whit its dependecy:
I'm working on a very strange project that has multiple .pro files that are built into multiples .exe
There is nothing strange about that. Having projects with more than one executable and multiple libraries is also standard.
What does this whole thing do? What kind of project is it?
What is your goal?! Just building it? Because I see you commented some of the submodules in the.pro
file, so they are not included?! -
by default it set on the project folder
But when i try to change the folder it put a warning message and then change nothing@AntGP said in Impossible Generate Executable whit its dependecy:
But when i try to change the folder it put a warning message and then change nothing
That's because QtCreator expects the build folder to be outside the source tree. Any reason why you want to have the build folder inside the tree folder?
-
@AntGP said in Impossible Generate Executable whit its dependecy:
and i build using thoose buttons on Qt creator
Sorry have to say, this answer is... something... creative :D
@AntGP Don't worry about the structure or the multiple
*.pro
files. It's common for larger projects with submodules, which need some extra build/install configuration...
Theinclude
includes other.pro
files, so you can share variables and functions/macros. That's why there is acommon.pro
which is included in (almost) every other pro (-ject).@AntGP said in Impossible Generate Executable whit its dependecy:
I'm working on a very strange project that has multiple .pro files that are built into multiples .exe
There is nothing strange about that. Having projects with more than one executable and multiple libraries is also standard.
What does this whole thing do? What kind of project is it?
What is your goal?! Just building it? Because I see you commented some of the submodules in the.pro
file, so they are not included?!@Pl45m4 said in Impossible Generate Executable whit its dependecy:
What does this whole thing do?
My goals are to have the executable able to work whiout all the source code, i don't want any .cpp allongside the exe so i can share the programme, and not have 1Go of source code with it
@Pl45m4 said in Impossible Generate Executable whit its dependecy:
There is nothing strange about that.
It's a 15 years old project whit no documentation, no comments on the code, lot of java script, and at least 4 differents dev befor me
It can be built, but not outside of the source code folder@jsulm said in Impossible Generate Executable whit its dependecy:
That's because QtCreator expects the build folder to be outside the source tree. Any reason why you want to have the build folder inside the tree folder?
That what i'm trying to do, i want to build it on my desktop and not on my source tree, but it build on the source tree even if i don't want and say otherwise, and if i try to move the .exe it say it miss some dll that are not even on the project or anywhere on my computer
(i think the name of the topic is not the best one whit some insight on the issues i have now)
-
@Pl45m4 said in Impossible Generate Executable whit its dependecy:
What does this whole thing do?
My goals are to have the executable able to work whiout all the source code, i don't want any .cpp allongside the exe so i can share the programme, and not have 1Go of source code with it
@Pl45m4 said in Impossible Generate Executable whit its dependecy:
There is nothing strange about that.
It's a 15 years old project whit no documentation, no comments on the code, lot of java script, and at least 4 differents dev befor me
It can be built, but not outside of the source code folder@jsulm said in Impossible Generate Executable whit its dependecy:
That's because QtCreator expects the build folder to be outside the source tree. Any reason why you want to have the build folder inside the tree folder?
That what i'm trying to do, i want to build it on my desktop and not on my source tree, but it build on the source tree even if i don't want and say otherwise, and if i try to move the .exe it say it miss some dll that are not even on the project or anywhere on my computer
(i think the name of the topic is not the best one whit some insight on the issues i have now)
@AntGP said in Impossible Generate Executable whit its dependecy:
It can be built, but not outside of the source code folder
So it builds in your IDE?
Then you are looking for Qt Deployment to run it standalone (as far as possible, you gonna need some DLLs to ship your app) as.exe
-
I'v tried to follow the tutorial, then to follow some youtube video ( https://www.youtube.com/watch?v=rFHPOZoqzcg) but it still doesn't work, it do the same and ask for some dll that are not existing at all
But it doesnt ask for them if im on the source tree -
Ok, so they should have used the
.pri
extension (it's mainly a convention but it clearly separates a project file from a inclusion file (and the.prf
which is for features).The main issue here is that the project forces everything to be "in-tree". It should not be PWD but OUT_PWD for anything that is related to build artifacts. However, you should just remove these lines (DESTDIR and OBJECTS_DIR).
As for starting the application, did you modify the PATH environment variable in the Run part of the Project panel so that the dependencies can be found ? (do not do it system wide).
-
Also, to add to @SGaist, that last error you got (0xc000007b) means that while you copied the correct names of the dlls, you copied the wrong version of them:
the 64-bit version of the dlls when the ,exe file is 32-bit or the other way around.@hskoglund That would be useful to know, does that error number always indicate a 32-/64-bit mismatch?
-
Yeah, pretty much always. (Much better compared to the other error 0xc000007c, which can occur due to multiple different reasons.)
@hskoglund I'll try to remember
7b
over7c
:)