Creator: "run" not finding shared library
-
I just "imported" a working Qt shared library and a qmake GUI as two separate projects into the latest Creator.
I get the library built fine.
The GUI program building with Creator has some fatal make errors as it seems to chop off the "-" for both "-o" and "-c".
It builds okay almost to the end when I go to the build directory and execute "make" at the command line.
It fails when it tries to locate the shared library I built first. I can see the "-L" argument and location correctly, but it can't find the library.When I go back to Creator and try to run the program, it can't find the shared library even though i added an explicit "LD_LIBRARY_PATH" to the run environment.
What am I doing wrong?
Thanks.
-
Can you elaborate "import" a bit more please? What do you have and what did you do?
-
I created a new GUI project, and then deleted the files generated (except the .pro file) and started hand modifying the pro file with entries from my working, manual GUI project. I copied all source and header files into the project directory. In the pro file I defined headers and sources like this:
SOURCES += *.cpp
HEADERS += *.h
-
You cannot add the source files with wildcards, you must list them individually.
You can create a template project file with
@
cd YourProjectDir
qmake -project
@This leaves a .pro in the directory. Go to Creator and open this file. The project will be imported. You can modify the .pro file later on, Creator will catch up the changes.
-
Okay, I will do that and report results tomorrow. Thanks.
-
I've explicitly named the source and headers, but still get the same make error: the "-c" becomes "c" which generates an error.
-
Can you show us your complete .pro file, please.
-
Hm, the file looks munged after pasting, Any way to attach a file?
-
wrap it in @ chars or use the code button (the rightmost button) of the editor.
-
Pro file follows:
@
######################################################################Automatically generated by qmake (2.01a) Mon Mar 14 19:04:49 2011
######################################################################
TEMPLATE = app
QT += network opengl sql svg webkit xml xmlpatterns testlib dbus
TARGET = valuecommon
TEMPLATE = libDEFINES += LIBVALUECOMMON_LIBRARY
DEPENDPATH += .
INCLUDEPATH += .unix:QMAKE_CXXFLAGS *= -include $(VALUE_HOME)/MSRS_config.h
use local choice of compiler, libraries, etc.
include($(VALUE_HOME)/msrs_features_creator.include)
Input
HEADERS += ajemDataHolder.h
base_t.h
blast.h
cadType.h
caseControl.h
caseSet.h
closedFormAlgorithm.h
compartment.h
compat.h
component.h
connector.h
constants.h
convert.h
counter.h
cylinder.h
damageMethod.h
damageMethodLibrary.h
designator.h
direntWin32.h
ellipsoid.h
energyTransfer.h
era_group.h
executionLogOptions.h
expatParser.h
external_blast.h
externalSuspension.h
extrusion.h
facet.h
faltNode.h
fastgen_comp.h
fastgen_filter.h
fCone.h
fDonut.h
fireStart.h
fixedDamageValue.h
fluidSystem.h
fragGroup.h
fragment.h
fragmentClosedForm.h
fragZone.h
fRec.h
fShape.h
fString.h
grid.h
gridprops.h
holeSize.h
indent_ns.h
influenceRegion.h
intersection.h
kernelBase.h
leaker.h
LokiExport.h
matrix33.h
mDebug.h
mEvent.h
munitionEventGrid.h
munitionEventMap.hSOURCES += ajemDataHolder.cpp
base_t.cpp
blast.cpp
caseControl.cpp
caseSet.cpp
closedFormAlgorithm.cpp
compartment.cpp
component.cpp
component_gl.cpp
connector.cpp
connector_gl.cpp
convert.cpp
cylinder.cpp
cylinder_gl.cpp
damageMethodLibrary.cpp
designator.cpp
direntWin32.cpp
ellipsoid.cpp
ellipsoid_gl.cpp
energyTransfer.cpp
era_group.cpp
executionLogOptions.cpp
expatParser.cpp
external_blast.cpp
externalSuspension.cpp
extrusion.cpp
facet.cpp
faltNode.cpp
fastgen_comp.cpp
fastgen_filter.cpp
fCone.cpp
fDonut.cpp
fireStart.cpp
fixedDamageValue.cpp
fluidSystem.cpp
fragGroup.cpp
fragment.cpp
fragmentClosedForm.cpp
fragZone.cpp
fRec.cpp
fShape.cpp
fShape_gl.cpp
fString.cpp
grid.cpp
holeSize.cpp
influenceRegion.cpp
intersection.cpp
kernelBase.cpp
leaker.cpp
matrix33.cpp
mDebug.cpp
mEvent.cpp
MSRS_config.cpp
munitionEventGrid.cpp
munitionEventMap.cpp
@ -
Include file follows:
@
For adding "global" features to pro files.
Use new C++ standard?? not now (Ubuntu Qt causes problems)
#unix:QMAKE_CXXFLAGS += -std=c++0x
add Boost and other libs as needed:
unix::LIBS += -lboost_regex-mt
unix::LIBS += -lexpat
unix::LIBS += -ldlcomment this out for shared (normal) compiling and linking)
#CONFIG += profile
profile {
static building and linking
CONFIG += staticlib
enable profiling with gprof (will also need static compile)
unix:QMAKE_CXXFLAGS_DEBUG += -pg
unix:QMAKE_LFLAGS_DEBUG += -pg
}
else {dynamic building and linking
CONFIG += -export-dynamic
unix:QMAKE_CXXFLAGS += -export-dynamic
}Choose specific compiler versions for Linux
unix:QMAKE_CC = $(MYGCC)
unix:QMAKE_CXX = $(MYGXX)
unix:QMAKE_LINK = $(MYGXX)
unix:QMAKE_LINK_C = $(MYGCC)
unix:QMAKE_LINK_C_SHLIB = $(MYGCC)
unix:QMAKE_LINK_SHLIB = $(MYGXX)special directories for auto-generated files
#OBJECTS_DIR = obj-autogen
#UI_DIR = ui-autogen
#MOC_DIR = moc-autogen
#RCC_DIR = qrc-autogenfor debugging and testing
#unix:QMAKE_CXXFLAGS += -Werror
unix:QMAKE_CXXFLAGS += -Wall
unix:QMAKE_CXXFLAGS += -Wextra
#unix:QMAKE_CXXFLAGS += -fno-inline # for valgrind memcheckeliminate openNURBS warnings
unix:QMAKE_CXXFLAGS += -Wno-ignored-qualifiers
eliminate warnings of unused variables
unix:QMAKE_CXXFLAGS += -Wno-unused
temp define to eliminate stuff for the g2xml conversion
unix:DEFINES += SELECT_ALL_REGIONS
hack to tell version of BRL-CAD
DEFINES += MY_BRLCAD_VERSION=$(MY_BRLCAD_VERSION)
for materials aliases improvement later
#DEFINES += USE_TR1_SHARED_PTR
#DEFINES += NON_GUI_DEBUG
DEFINES += USE_VALUEFILE_H # trying to eliminate valueFile.h
#DEFINES += TAPE1CONV_DEBUG
#DEFINES += FALT_DEBUG # see faltNode.cpp and friends
#DEFINES += REPGEN_DEBUG # also checks base_t xnodeCreate
#DEFINES += GUI_DEBUG # see gui/appWindow.cpp
#DEFINES += RAYPATH_DEBUG # see target.cpp for use#DEFINES += XNODE_DEBUG # see xNode.cpp (and ./non-gui/main.cpp)
#DEFINES += XNODE_IMPROVEMENT_STEP_ONE
#DEFINES += UNWIND_XNODE_STACK#DEFINES += ERA_DEBUG # see tgm.cpp, threatType.cpp, pdamShapedCharge.cpp, and others
#DEFINES += FACESET_DEBUG # see xmlTgm.cpp and others#DEFINES += FSHAPE_DEBUG # see fShape.cpp and others
#DEFINES += VALUE_DEBUG_COMP_ATTRS # used in xmlTgm.cpp, primarily for ERA regions
#DEFINES += AROD_DEBUG
#DEFINES += DDEBUG # a nan check
#DEFINES += EFP_DEBUG
#DEFINES += PDAM_SC_DEBUG # shaped charge check
#DEFINES += HE_DEBUG
#DEFINES += SC_DEBUG
#DEFINES += FRAG_DEBUG # frags (actually, not anything!) not getting kills
#DEFINES += RF_DEBUG
#DEFINES += RF_DEBUG_LEVEL2
#DEFINES += TGM_DEBUG
#DEFINES += VALUE_DEBUG # use for new/delete tracking#DEFINES += USE_OLD_RAYPATH_ALGORITHM # see rayPath.cpp for use
#DEFINES += LIBTGM_DEBUG # use for reference counting
MANTECHLIB = -lmantech -lxqdbm -lxmlwrapp -ltokyocabinet -lz
@ -
The sources and headers list were shortened to meet 6000 char limit.
-
I would try to leave out ALL the additional stuff. Then re-add this stuff one by one (line by line) and see where and when it bails out.
-
headers and sources with multipĆ¼le line must end with , right?
@
SOURCES += ajemDataHolder.cpp
base_t.cpp
blast.cpp
caseControl.cpp
caseSet.cpp
closedFormAlgorithm.cpp
compartment.cpp
component.cpp
@ -
[quote author="Gerolf" date="1300192313"]headers and sources with multipĆ¼le line must end with , right?
@
SOURCES += ajemDataHolder.cpp
base_t.cpp
blast.cpp
caseControl.cpp
caseSet.cpp
closedFormAlgorithm.cpp
compartment.cpp
component.cpp
@
[/quote]Yes, they do.
-
Okay, I will work on it line by line. Thanks.
-
some additional issues:
i know of
- XXX += y
- XXX -= y
but not of
- unix:QMAKE_CXXFLAGS *= -include $(VALUE_HOME)/MSRS_config.h
-
*= is valid, Gerolf. It will add to the variable only if the added value is not already contained. I use it all the time. It is especially handy if you use .pri files that might get included more than once.
-
Note that my previous use of
SOURCES += *.cpp
HEADERS += *.hseemed to work. I have also used:
SOURCES += $$system(ls $$(VALUE_HOME)/libvalutil/src/*.cpp
and similar lines successfully on one of my original, non-Creator projects.
-Tom
-
Creator just calls qmake and make and does not fiddle around in the project files and does not construct compiler command lines itself.
If you .pro works on the command line, it works in Creator too.
2/27