David Oswald
2012-08-25 20:08:27 UTC
Currently Inline is choosing the following defaults for MSVC++:
elsif ( $Config{osname} =~ m/^MSWin/ ) {
$cc_guess = 'cl -TP -EHsc';
$libs_guess = ' MSVCIRT.LIB ';
}
However, the docs I found here: http://support.microsoft.com/kb/154753
...suggest that library pertains to the old style iostream.h headers,
and that there are other options for the newer iostream headers.
I have a PASS test case here:
http://www.cpantesters.org/cpan/report/6c31c478-0eee-1019-8efa-b89a05085451
...where we're fortunate enough that the smoke tester had
ExtUtils::CppGuess installed (in which case one of my optional tests
runs), and that gave me additional info.
# Detected MSWin (probably ActiveState).
#
# Compiler guesses:
# EU::CppGuess: [cl -TP -EHsc ],
# Makefile.PL: [cl -TP -EHsc].
# Linker guesses:
# EU::CppGuess: [ msvcprt.lib ],
# Makefile.PL: [MSVCIRT.LIB].
t/08cppguess.t ......... ok
So EU::CppGuess is recommending msvcprt.lib. That library seems to
pertain to a debug compile. There are other options for single and
multi-threaded non-debug environments.
Does anyone have any input on what (if any) changes we should be
making here? I'm thinking the logic needs additional complexity to
determine if we've got a debug build of Perl, and if we're in a single
or multi-threaded environment. Although nobody seems to have
complained yet, and I'm not seeing any FAILs. Maybe it's not an
issue. ...or maybe an issue that will only turn up if someone tries
to use iostream in their C++ extension code.
Dave
elsif ( $Config{osname} =~ m/^MSWin/ ) {
$cc_guess = 'cl -TP -EHsc';
$libs_guess = ' MSVCIRT.LIB ';
}
However, the docs I found here: http://support.microsoft.com/kb/154753
...suggest that library pertains to the old style iostream.h headers,
and that there are other options for the newer iostream headers.
I have a PASS test case here:
http://www.cpantesters.org/cpan/report/6c31c478-0eee-1019-8efa-b89a05085451
...where we're fortunate enough that the smoke tester had
ExtUtils::CppGuess installed (in which case one of my optional tests
runs), and that gave me additional info.
# Detected MSWin (probably ActiveState).
#
# Compiler guesses:
# EU::CppGuess: [cl -TP -EHsc ],
# Makefile.PL: [cl -TP -EHsc].
# Linker guesses:
# EU::CppGuess: [ msvcprt.lib ],
# Makefile.PL: [MSVCIRT.LIB].
t/08cppguess.t ......... ok
So EU::CppGuess is recommending msvcprt.lib. That library seems to
pertain to a debug compile. There are other options for single and
multi-threaded non-debug environments.
Does anyone have any input on what (if any) changes we should be
making here? I'm thinking the logic needs additional complexity to
determine if we've got a debug build of Perl, and if we're in a single
or multi-threaded environment. Although nobody seems to have
complained yet, and I'm not seeing any FAILs. Maybe it's not an
issue. ...or maybe an issue that will only turn up if someone tries
to use iostream in their C++ extension code.
Dave
--
David Oswald
daoswald-***@public.gmane.org
David Oswald
daoswald-***@public.gmane.org