Boost C++ Libraries: Ticket #7839: Boost.Locale does not build against ICU4C 52.1.1 on Windows Vista https://svn.boost.org/trac10/ticket/7839 <p> The following build error occurs in Boost 1.52.0 when building against ICU4C 50.1.1 on Windows Vista, but does not occur when building against ICU4C 49.1.2 on the same machine: </p> <pre class="wiki">compile-c-c++ bin.v2\libs\locale\build\msvc-10.0\debug\boost.locale.icu-on\boost.locale.std-off\link-static\threading-multi\icu\formatter.obj formatter.cpp include\unicode/decimfmt.h(41) : fatal error C1083: Cannot open include file: 'unicode/enumset.h': No such file or directory </pre><p> (The file in question exists at "[icu]\source\common\unicode\enumset.h".) </p> <p> Boost builds correctly against both versions of ICU on the newest OS X version. </p> <p> <strong>Note</strong> the forward slash in the path (unicode<strong>/</strong>decimfmt.h); this should be a backslash on Windows, and might explain why the build proceeds normally on OS X (which uses forward slashes as path delimiters). </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/7839 Trac 1.4.3 Jason Erb <jason.erb@…> Tue, 01 Jan 2013 19:16:24 GMT <link>https://svn.boost.org/trac10/ticket/7839#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7839#comment:1</guid> <description> <p> My guess is that problem is due to header path changes in ICU 50.1.1. </p> <p> (To clarify the note above: the forward slash is clearly not a problem in the context given, as decimfmt.h is found; the point of the note is to indicate that the wrong kind of slashes may have a problematic effect elsewhere, such as in header include path configuration.) </p> </description> <category>Ticket</category> </item> <item> <dc:creator>viboes</dc:creator> <pubDate>Thu, 03 Jan 2013 16:29:27 GMT</pubDate> <title>component changed; owner set https://svn.boost.org/trac10/ticket/7839#comment:2 https://svn.boost.org/trac10/ticket/7839#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> <p> Moved to Locale component, in case the maintainer could find a solution. </p> Ticket Artyom Beilis Fri, 04 Jan 2013 14:19:03 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/7839#comment:3 https://svn.boost.org/trac10/ticket/7839#comment:3 <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> You are not using ICU properly. </p> <p> Please install it so you get proper layout of headers and libraries in ICU and than build Boost.Locale. </p> <p> Read this carefully for more details: </p> <p> <a href="http://www.boost.org/doc/libs/1_52_0/libs/locale/doc/html/building_boost_locale.html">http://www.boost.org/doc/libs/1_52_0/libs/locale/doc/html/building_boost_locale.html</a> </p> Ticket Jason Erb <jason.erb@…> Fri, 04 Jan 2013 14:59:52 GMT status changed; resolution deleted https://svn.boost.org/trac10/ticket/7839#comment:4 https://svn.boost.org/trac10/ticket/7839#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">closed</span> → <span class="trac-field-new">reopened</span> </li> <li><strong>resolution</strong> <span class="trac-field-deleted">invalid</span> </li> </ul> <p> I have been able to use several previous versions of ICU correctly with boost.locale. It is only the latest verson (50.1.1) that will not build, and only on Windows (it builds fine on Xcode using LLVM). This indicates that my build configuration is correct. I have followed all of the instructions in the link that you provided. </p> <p> It appears to me that something has changed in ICU that boost.locale is not properly accounting for. Please let me know if you need any assistance reproducing this problem. I can send my build scripts if it would help. </p> Ticket Jason Erb <jason.erb@…> Fri, 04 Jan 2013 15:15:33 GMT <link>https://svn.boost.org/trac10/ticket/7839#comment:5 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7839#comment:5</guid> <description> <p> The build scripts can be found in the root of <a class="ext-link" href="https://github.com/sparist/Om"><span class="icon">​</span>https://github.com/sparist/Om</a> : </p> <ul><li>Windows build script: <a class="ext-link" href="https://github.com/sparist/Om/blob/master/make.bat"><span class="icon">​</span>https://github.com/sparist/Om/blob/master/make.bat</a> </li><li>Mac build script: <a class="ext-link" href="https://github.com/sparist/Om/blob/master/make.sh"><span class="icon">​</span>https://github.com/sparist/Om/blob/master/make.sh</a> </li></ul><p> The full build instructions are given here: <a class="ext-link" href="http://sparist.github.com/Om/#building"><span class="icon">​</span>http://sparist.github.com/Om/#building</a> </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Artyom Beilis</dc:creator> <pubDate>Fri, 04 Jan 2013 21:19:19 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/7839#comment:6 https://svn.boost.org/trac10/ticket/7839#comment:6 <ul> <li><strong>status</strong> <span class="trac-field-old">reopened</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">invalid</span> </li> </ul> <p> This is clearly problem of your ICU installation: </p> <pre class="wiki">include\unicode/decimfmt.h(41) : fatal error C1083: Cannot open include file: 'unicode/enumset.h': No such file or directory </pre><p> Means you had not installed/configured/build properly. The header - decimfmt.h is included correctly but not enumset.h which is part of the include </p> <p> <a class="ext-link" href="http://icu-project.org/apiref/icu4c/decimfmt_8h_source.html"><span class="icon">​</span>http://icu-project.org/apiref/icu4c/decimfmt_8h_source.html</a> </p> <p> Also a part of proper ICU 50.1.1 installation... </p> <blockquote class="citation"> <p> (The file in question exists at "[icu]\source\common\unicode\enumset.h".) </p> </blockquote> <p> Makes me think that you try to point include to original source and not the installed headers. </p> <p> Bottom line, fix your build scripts, installation or whatever you do incorrectly with ICU and don't reopen this bug. </p> Ticket Jason Erb <jason.erb@…> Sat, 05 Jan 2013 01:34:53 GMT <link>https://svn.boost.org/trac10/ticket/7839#comment:7 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7839#comment:7</guid> <description> <p> This does not appear to be a naive user error (as you continue to suggest). On Windows, I build boost as follows, where %Icu% is the ICU root directory *and* the directory in which the allinone.sln solution places the build products ("bin/", "include/", etc.): </p> <pre class="wiki">call .\bootstrap --with-icu="%Icu%" call .\b2 boost.locale.icu=on boost.locale.std=off -sICU_PATH="%Icu%" --with-chrono --with-locale --with-system --with-thread link=static stage </pre><p> On further investigation, neither include directory (in 49.1.2 or 50.1.1) contains the file "unicode/enumset.h" on Windows, but only the 50.1.1 include directory on Mac does (the include directory in 49.1.2 on Mac does not). Indeed, the include was added to "unicode/decimfmt.h" in 50.1.1, and it is only included when the macro UCONFIG_NO_FORMATTING is false. </p> <p> As such, the problem appears to be with the default ICU 50.1.1 windows build via the provided allinone.sln file, rather than with boost.locale, so I will leave this ticket closed. </p> <p> It is not a priority at present for me to continue investigating why boost.locale's primary dependency is broken. As boost.locale's maintainer, you might consider making it one of yours and filing a bug with ICU as necessary. And you might also consider being less rude to your users. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>anonymous</dc:creator> <pubDate>Mon, 22 Apr 2013 18:09:08 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/7839#comment:8 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/7839#comment:8</guid> <description> <p> The bypass from the ICU sourceforge tracking list is: </p> <p> "Thanks. And this defect is also on the older-versions' distributions. # it seems to be fixed just by copying enumset.h # from src/common/unicode of source-distribution." </p> <p> Hers is the thread: </p> <p> I found a difficulty on ICU4C 51.1 VC10-binary. As enumset.h not found at include/unicode, any code that #include &lt;unicode/decimfmt.h&gt; leads error:&#34;enumset.h not found&#34;. </p> <p> # even if the source-distribution is re-built using vc10, # include/unicode/enumset.h NOT appeared. </p> <p> By the same reason, re-building Xalan-C 1.11 fails. </p> <p> And the response is: </p> <p> Thank you, </p> <blockquote> <p> This is a defect that was just found. I will add it to the known defects </p> </blockquote> <p> list on the download page. I do not have a patch yet but will be working on it soon. Steven </p> </description> <category>Ticket</category> </item> </channel> </rss>