QtCreator - Compiling Issue - External source files
-
I have a Qt project, accessing another cross-platform (boost) project on my disc. Adding the header includes does not seem to cause any problem.
#include "../../Visual Studio 2015/Projects/..." //Header file down the road
Adding existing source files to the sources folder in my Qt Project works also without a problem, the files are found and I can open them. But these source files are not compiled, as a linker error clearly states (IMO).
LNK1104: cannot open file 'debug\Error.obj'
Copying the content of (here Error.cpp) the source file in a new file in the Qt-Project directory and adding it solves the problem, though that would mean having to copy each time I pull the other project's changes with git or make changes myself. That misses the purpose of including external source files.
I have already asked this question on stackoverflow without much luck. One suggestion was to create a ".pri" file and include this file in the Qt-project's ".pro" file. The best I got out of this was a change of the linker error from 1104 to 1181, both unable to open the ".obj" file.
Has someone experienced this behaviour before or has a hint to a possible solution ?
-
Hi @Blacktempel, and welcome to the Qt Dev Net!
The correct way to link to external libraries is described at http://doc.qt.io/qt-5/third-party-libraries.html. In a nutshell, you should set the
INCLUDEPATH
andLIBS
variables in your *.pro file.@Blacktempel said:
#include "../../Visual Studio 2015/Projects/..." //Header file down the road
After you set
INCLUDEPATH
, you don't need such a long #include line anymore. -
Hello @JKSH,
thank you for your answer. This is no library, these are just external source files which have to be compiled together with my Qt-project. The boost headers and libs are already correctly included. Setting the
INCLUDEPATH
variable only changes the length of the header include and source file include in the *.pro file.
Trying to set the correct path to the boost-directories root directory and adding the source files with a "short path" results in a failure to find the files at all, which is... a little strange but I was already there. (Paths are correct)
If I use the "long" path, the files are found, but not compiled.INCLUDEPATH += //all other include paths \ "../../Visual Studio 2015/Projects/ProjectDir/" SOURCES += //all other sources \ Shared/Net/Error.cpp //or using ProjectDir/Net/Error.cpp
results in "Failure to find: %filenameWithShortPath%".
-
Hi @Blacktempel,
I see, I misread your original post.
One suggestion was to create a ".pri" file and include this file in the Qt-project's ".pro" file. The best I got out of this was a change of the linker error from 1104 to 1181, both unable to open the ".obj" file.
What happens if you try this solution again, after moving/copying the external source files to a path that does not contain any spaces?
-
Hi @JKSH,
changing the include in the *.pro file to a path without spaces seemed to work, thank you.
As test I copied the project to C://This apparently works and source files are compiled. include(C:/ProjDir/ProjName.pri) //This works too, but the source files are not being compiled. include("../../Visual Studio 2015/Projects/ProjDir/ProjName.pri")
Is that an existing bug in "include" ?
Is there currently no way to include external source files where the path has space[s] in it ? -
@Blacktempel said:
Is that an existing bug in "include" ?
Is there currently no way to include external source files where the path has space[s] in it ?I'm not sure; I have never used the
include()
function with space-containing paths.You can ask the Qt engineers by subscribing to the Interest mailing list and posting there.