[cfe-dev] Using Clang with Windows

Paul A. Bristow pbristow at hetp.u-net.com
Tue Nov 6 08:44:07 PST 2012


I have been trying to follow Joshua Boyce's use of Clang with Windows 
 
http://article.gmane.org/gmane.comp.lib.boost.devel/235708
 
I can use Ruben's C:/mingw32-dw2 download and compile 'hello world' programs with NetBeans (on
Windows), so I think I have the compiler installed OK.
 
I am now trying to compile the Boost libraries to produce the usual dlls etc using b2/bjam.
 
In my user-config.jam I have
 
# GCC configuration using the mingw32 version.
using gcc
  : 4.7.2 
  : "c:/mingw32/bin/g++.exe"
  ;
 
#  Clang compiler using mingw32 dw2 Ruben's release.
using clang
  : 3.1
  : "C:/mingw32-dw2/bin/clang++.exe"
  : <cxxflags>-v
    <cxxflags>-std="c++11"
    <cflags>-nostdinc # Do not include MSVC C headers.
    <cxxflags>-nostdinc++ # Do not include MSVC C++ headers.
    # Use mingw-dw2 for includes
    <cxxflags>-cxx-include-arch="C:/mingw32-dw2/i686-w64-mingw32"
    <cxxflags>-cxx-include-32bit-dir=32
    <cxxflags>-cxx-include-root="C:/mingw32-dw2/include/c++/4.6.3"
    <cxxflags>-stdlib=libc++
    #<compileflags>-std=gnu++11
    #<define>BOOST_STDLIB_CONFIG="i:/boost-trunk/boost/config/stdlib/libstdcpp3.hpp"
    <linkflags>-stdlib=libc++
  ;
 
and the command file add the mingw and /bin to myPATH and contains
 
b2 -a -d2 -q toolset=clang --build-dir=i:\boost-trunk --build-type=complete stage threading=multi
--with-test  > build_clang_dll_libs_trunk_test_%date%_%tim%.log 2>&1
 
 
In file included from .\boost/detail/fenv.hpp:69:
C:/mingw32-dw2/bin\..\lib\clang\3.1/../../../include/c++/4.6.3\fenv.h:57:11: error: no member named
'fenv_t' in the global namespace
  using ::fenv_t;
        ~~^
C:/mingw32-dw2/bin\..\lib\clang\3.1/../../../include/c++/4.6.3\fenv.h:58:11: error: no member named
'fexcept_t' in the global namespace
  using ::fexcept_t;
 
and this is 'cured' by adding
 
    <cflags>-nostdinc # Do not include MSVC C headers.
    <cxxflags>-nostdinc++ # Do not include MSVC C++ headers.
 
and adding     <cxxflags>-stdlib=libc++  reduces the messages considerably, 
 
but I still get
 
In file included from .\boost/config.hpp:40:
.\boost/config/select_stdlib_config.hpp:18:12: fatal error: 'cstddef' file not found
#  include <cstddef>
           ^
1 error generated.
 
The location for includes  <include>"C:/mingw32-dw2/include/c++/4.6.3"
 
which is location of cstddef
 
but NOT cstddef.h
 
It contains
 
#pragma GCC system_header
 
#include <bits/c++config.h>
#include <stddef.h>
 
Adding these 'includes', or various actual includes doesn't cure the problem L
 
    <cxxflags>-cxx-include-arch="C:/mingw32-dw2/i686-w64-mingw32"
    <cxxflags>-cxx-include-32bit-dir=32
    <cxxflags>-cxx-include-root="C:/mingw32-dw2/include/c++/4.6.3"
 
This seems so nearly working (and seems the same as Joshua Boyce has done).
 
Can anyone help please?
 
Paul
 
---
Paul A. Bristow,
Prizet Farmhouse, Kendal LA8 8AB  UK
+44 1539 561830  07714330204
pbristow at hetp.u-net.com
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121106/42d46db0/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: build_clang_dll_libs_trunk_test_06-Nov-2012_1604.txt
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121106/42d46db0/attachment.txt>


More information about the cfe-dev mailing list