Thanks Alan. I'll have a look at that over the weekend. But just so you know in
both the static and dynamic build case the libraries are not linked into the
plplot library. If I create a program and link in Plplot, then I must
separately link all the libraries that Plplot uses. This is the case also for
the examples. I can view the properties of each example project in visual
studio and see the libraries that are linked in - which is Plplot and all the
inherited dependencies. I'm not sure if this static behaviour is the same on
linux - it's obviously much less common to link statically on that OS.
Anyway. Have a good weekend.
Phil
-----Original Message-----
From: "Alan W. Irwin" <ir...@beluga.phys.uvic.ca>
Sent: 29/08/2014 20:12
To: "Phil Rosenberg" <philip_rosenb...@yahoo.com>
Cc: "PLplot development list" <plplot-devel@lists.sourceforge.net>
Subject: RE: [Plplot-devel] tcl build problem
On 2014-08-29 18:22+0100 Phil Rosenberg wrote:
> Hi Alan
> Got both your messages. Unfortunately that cannot be where the external
> libraries are linked into the examples as I am building static libraries so
> almost that entire file (including the section you indicated) is skipped.
> Just to be clear, Plplot itself is building fine, the linker error is when
> building the examples.
When the plplot library is built as a static library, the devices are
no longer independent DLL's, and instead the device code is inserted
into the plplot library so all device compile flags and link flags
need to be accumulated for that library. Of course, that is pretty
difficult to get all that implemented correctly because of the large
number of device drivers with many different dependencies so note my
remarks below about also testing the default shared plplot
library/dynamic devices case.
The relevant CMake logic for the static plplot library case is in
src/CMakeLists.txt (where the plplot library build is configured). In
that case look for
else(ENABLE_DYNDRIVERS)
list(APPEND libplplot${LIB_TAG}_LINK_LIBRARIES ${DRIVERS_LINK_FLAGS})
[...]
endif(ENABLE_DYNDRIVERS)
[...]
#message(STATUS
#"libplplot${LIB_TAG}_LINK_LIBRARIES =
${libplplot${LIB_TAG}_LINK_LIBRARIES}"
#)
target_link_libraries(
plplot${LIB_TAG}
${libplplot${LIB_TAG}_LINK_LIBRARIES}
)
You should uncomment that message command to look at the
CMake list in libplplot${LIB_TAG}_LINK_LIBRARIES to see if there is
anything strange there in the static libraries case. Of course, you
have stated that the static plplot library is building OK, but the
trouble you are having with example builds may originate in
how that library is built.
What you said before about the extra .lib issue was
'This allows me to compile, but I am getting linker errors in the
examples, because the
linker flags are ending up as
"C:/Program Files/Tcl/lib/tcl86.lib".lib'
To proceed further I need complete information. Therefore, please
send the usual that I always request for a complete bug report:
cmake version,
complete cmake options used,
complete output from cmake command starting from initially empty build tree,
complete (VERBOSE=1) output from (n)make command,
CMakeCache.txt file.
The first two items you can send just as part of the main text part of
your next post here, but the remaining items should be packed into a
compressed tarball or zip file and attached to that same post.
Here are some further possibilities to consider:
Use CMake-2.8.12.2 and the NMake generator (for the reasons I gave before).
Also, the static plplot library case is not nearly as well debugged
for our build system as the default shared libraries/dynamic devices
case. Therefore, I would also try that default case (which would be an
additional valuable test of building the Tcl/Tk bindings for your
platform). Of course, remember to use the -DTEST_DYNDRIVERS=OFF
workaround that is normally required for this case on Windows (to
avoid doing the simple test of dynamic devices that fails on Windows
when the same test with essentially the same code succeeds when run
from the plplot library on Windows! Go figure....)
Alan
__________________________
Alan W. Irwin
Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).
Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel