On 2020-08-01 14:04, racoon wrote:
On 2020-08-01 13:42, Stephan Witt wrote:
Am 01.08.2020 um 12:50 schrieb racoon <xraco...@gmx.de>:
On 2020-08-01 12:43, Stephan Witt wrote:
Am 01.08.2020 um 09:48 schrieb Daniel <xraco...@gmx.de>:
I am trying to fix Ticket #9376. My attempt so far is attached.
However, I have hit a little road block in that the clang compiler
does not give me useful information (for me at least):
CXXLD lyx
Undefined symbols for architecture x86_64:
"std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> >
lyx::convert<std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> >,
lyx::Length>(lyx::Length)", referenced from:
lyx::LyXRC::write(std::__1::basic_ostream<char,
std::__1::char_traits<char> >&, bool, std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&)
const in liblyxcore.a(LyXRC.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
make[4]: *** [lyx] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
ERROR: Cannot build and install lyx for x86_64.
Maybe someone knows what I might be doing wrong?
IMO, it’s the change from int for full_screen_width to Length for
screen_width.
In LyXRC::write() the operator << is not implemented for Length,
probably.
Sounds plausible. So, short of implementing << for length, I should
probably store the length in some other format, like string. Length
seems to have a function for that: asString().
Yes, the lyxrc file stores strings only anyway :)
You have a similar problem with the opposite direction.
The "lexrc >> screen_width“ construct may not lead to errors at
compile or link time.
But may result in dataloss silently if the >> operator doesn’t do the
right thing.
Furthermore the move from „\fullscreen_width“ to „\screen_width“ in rc
file requires
the appropriate converter for existing rc files to the new syntax.
Yes, a pref2pref conversion is necessary anyway, since the new version
should store a length and a unit while the previous one only stored a
length.
Okay, I give up for now.
I tried to do it properly with strings this time. However, I can't
figure out how to get a Length from a string. From the name
Length::Length(string const & data)
seemed promising but I don't think it's the right function. (By the way
"widgetsToLength" also does not what the name suggests, i.e. it returns
a string rather than a Length.)
I am still getting the linker failure with the patch attached.
Some more bisecting later... I cannot even add this line to LyXRC.h
without getting the linker failure:
std::string x = Length("7in").asString();
(And with
std::string x = Length(7, Length::IN).asString();
and
Length x = Length(7, Length::IN);)
Maybe someone can enlighten me one day how to get a string from Length.
Anyway, I just entered the string directly, i.e.
screen_width = "7in"
instead of
screen_width = Length("7in").asString(),
and it worked: https://www.lyx.org/trac/ticket/9376#comment:27.
Daniel
--
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel