Boost C++ Libraries: Ticket #8770: has_icu_test depending on DEBUG ICU libraries https://svn.boost.org/trac10/ticket/8770 <p> I am pretty sure this has been brought to attention before, as I distinctly remember reading a discussion on the issue, but I couldn't find it in the database. </p> <p> Platform is Windows XP, MS Visual Studio 8. </p> <p> Having unpacked the latest ICU release to support MSVC 8 (which is ICU 4.0.1), I am trying to compile Boost 1.54.0 with ICU support enabled. </p> <p> Using the <a href="http://www.boost.org/doc/libs/1_54_0/libs/regex/doc/html/boost_regex/install.html#boost_regex.install.building_with_unicode_and_icu_support">instructions</a>, I call: </p> <blockquote> <p> bjam -sICU_PATH=C:\contrib\icu-4.0.1 </p> </blockquote> <p> I get: </p> <blockquote> <p> ... </p> </blockquote> <ul><li>has_icu builds : no </li></ul><p> In bin.v2\config.log: </p> <blockquote> <p> msvc.link bin.v2\libs\regex\build\msvc-8.0\debug\has_icu.exe LINK : fatal error LNK1181: cannot open input file 'icuind.lib' </p> </blockquote> <blockquote> <blockquote> <p> call "C:\Programme\microsoft visual studio 8\vc\vcvarsall.bat" x86 &gt;nul </p> </blockquote> <p> link /NOLOGO /INCREMENTAL:NO /DEBUG /MACHINE:X86 /MANIFEST /subsystem:console </p> <blockquote> <p> if %ERRORLEVEL% NEQ 0 EXIT %ERRORLEVEL% </p> </blockquote> </blockquote> <blockquote> <p> ...failed msvc.link bin.v2\libs\regex\build\msvc-8.0\debug\has_icu.exe bin.v2\libs\regex\build\msvc-8.0\debug\has_icu.pdb... </p> </blockquote> <p> In bin.v2\libs\regex\build\msvc-8.0\debug: </p> <blockquote> <p> "bin.v2\libs\regex\build\msvc-8.0\debug\has_icu_test.obj" "icudt.lib" "icuind.lib" "icuucd.lib" </p> </blockquote> <p> This happens even if I state <code>variant=release</code> on the <code>bjam</code> line. I.e., to determine whether ICU is present <em>for a release build</em>, Boost is looking for <em>debug</em> versions of the ICU libraries. This renders the default instructions of how to build Boost with ICU support non-functional with the default distribution of ICU for Windows, effectively forcing people to manually compile ICU instead of using the ready-made binaries, to satisfy peculiarities of the Boost build system. (Unless there are some command-line switches I am not aware of, which should then be made part of the respective documentation of the build process.) </p> <p> Thumbs down, that's not the way to go. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/8770 Trac 1.4.3 Martin Baute <solar@…> Wed, 03 Jul 2013 09:27:01 GMT <link>https://svn.boost.org/trac10/ticket/8770#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/8770#comment:1</guid> <description> <p> I just confirmed that a self-compiled version of ICU, <em>including</em> the debug versions of the libraries, indeed makes all the difference: </p> <ul><li>has_icu builds : yes </li></ul><p> So, <code>bjam</code> should link that test executable against the <em>release</em> version of the ICU libraries, at least when asked to build the <em>release</em> version of Boost only. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Sat, 12 Oct 2013 13:13:28 GMT</pubDate> <title>component changed; owner set https://svn.boost.org/trac10/ticket/8770#comment:2 https://svn.boost.org/trac10/ticket/8770#comment:2 <ul> <li><strong>owner</strong> set to <span class="trac-author">Artyom Beilis</span> </li> <li><strong>component</strong> <span class="trac-field-old">Building Boost</span> → <span class="trac-field-new">locale</span> </li> </ul> Ticket josuegomes Thu, 04 May 2017 21:42:45 GMT <link>https://svn.boost.org/trac10/ticket/8770#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/8770#comment:3</guid> <description> <p> It seems that Boost.Locale is abandoned. </p> <p> The solution here is to bypass the brain damaged ICU detection by setting ICU_PATH and ICU_LINK in the bjam command line. Note that this affects both Locale and Regex. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Artyom Beilis</dc:creator> <pubDate>Thu, 13 Jul 2017 14:33:29 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/8770#comment:4 https://svn.boost.org/trac10/ticket/8770#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> <p> Note: you should never link release with debug versions and other way around since you get incompatible runtime i.e. link with both MSVCRTXXD.DLL and MSVCRTXX.DLL </p> <p> It is by design. </p> Ticket