Re: [Boost-users] I ran b2 with the -d+2 command and redirected the output to a file
My project-config.jam file has quotes where needed, so that's not a problem. That file isn't the problem, but probably the commands I'm running are.
I'll try to see if I can get it to work without Stacktrace.
________________________________
From: Osman Zakir
On Sat, 5 Jan 2019 at 17:54, Osman Zakir via Boost-users < boost-users@lists.boost.org> wrote:
I'll try to see if I can get it to work without Stacktrace.
If you don't [for the moment] need it, just exclude it: --without-stacktrace. degski -- *“If something cannot go on forever, it will stop" - Herbert Stein*
I built it without the MPI and Stacktrace libraries, but still I have errors about Boost.Spirit. This time it's about enums being able to be expressed with some object's underlying int value. I'm going to just build it with MSVC for now and wait for the LLVM support to be completed.
I tried to use the attached configuration file when trying to build it with MSVC this time. The output from b2 is in the boost-build.log file. Note the fact that it's saying that "/permissive-" is an extra argument. I was trying to turn on MSVC's standards-conformance mode. How do I do this when building Boost using MSVC without getting this error?
________________________________
From: Boost-users
Adding to previous message: I called b2 like this, this time: ".\b2 --prefix=C:/Boost_msvc --build-dir=C:/Boost_Build_msvc -d+2 --build-type=complete --layout=versioned install > ./boost-build.log".
The output from b2 is in the boost-build.log file. Note the fact that it's saying that "/permissive-" is an extra argument. I was trying to turn on MSVC's standards-conformance mode. How do I do this when building Boost using MSVC without getting this error? b2 doesn't like the dash [-] at the end of permissive [it assumes it's the begin of another flag]. I'm just making this up here, but try to double-quote it. ""/permissive-"", maybe that works, I don't know. If not, you should write to the developer-list: boost@lists.boost.org, as in that case, this needs a fix in the b2-code [as it seems you do it right], or maybe one of the resident gurus knows another way to get that to pass. degski -- *“If something cannot go on forever, it will stop" - Herbert Stein*
On Sun, 6 Jan 2019 at 10:00, degski
If not, you should write to the developer-list: boost@lists.boost.org, as in that case ...
Don't forget to subscribe [to that list]! -- *“If something cannot go on forever, it will stop" - Herbert Stein*
I managed to build it with MSVC. But none of the <cxxflags> arguments worked so I had to them all out of the configuration file. I built it with the "--layout=versioned" setting, but when I tried to build Jinja2Cpp again by specifying -DBOOST_ROOT=C:/boost_msvc/include/boost-1_69 because the header files are inside the "boost" directory at that location (I think this is a weird installation directory path for Boost, though), CMake still couldn't find Boost. I looked in FindBoost.cmake module before and saw that there's code in there for finding Boost version 1.69.0 as well, so I don't know why it's not working. Jinja2Cpp has Boost in the submodules (the code is all on GitHub), but the version of Boost that they have is 1.64. I wonder if that's why it can't find 1.69. Could be that the version in the submodule is too old.
From: Boost-users [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Osman Zakir via Boost-users Sent: 06 January 2019 16:33 To: boost-users@lists.boost.org Cc: Osman Zakir Subject: Re: [Boost-users] I ran b2 with the -d+2 command and redirected the output to a file I managed to build it with MSVC. But none of the <cxxflags> arguments worked so I had to them all out of the configuration file. I think that this is partly because you are using Microsoft compiler options https://docs.microsoft.com/en-us/cpp/build/reference/compiler-options?view=v... with Clang compiler https://clang.llvm.org/docs/UsersManual.html#command-line-options but also because the way of negating using b2/bjam is different, for example -<toolset>msvc:<define>_DEBUG # Undefine DEBUG. so to switch off permissive you should use -<cxxflags>/permissive and probably not <cxxflags>/permissive- But get it working before you try to enforce standards? Sorry - I should have spotted this before. Paul --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830
From: Boost-users [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Osman Zakir via Boost-users Sent: 06 January 2019 16:33 To: boost-users@lists.boost.org Cc: Osman Zakir Subject: Re: [Boost-users] I ran b2 with the -d+2 command and redirected the output to a file I managed to build it with MSVC. But none of the <cxxflags> arguments worked so I had to them all out of the configuration file. I built it with the "--layout=versioned" setting, but when I tried to build Jinja2Cpp again by specifying -DBOOST_ROOT=C:/boost_msvc/include/boost-1_69 because the header files are inside the "boost" directory at that location (I think this is a weird installation directory path for Boost, though), CMake still couldn't find Boost. I looked in FindBoost.cmake module before and saw that there's code in there for finding Boost version 1.69.0 as well, so I don't know why it's not working. Cmake Boost is a work-in-progress, so don't be surprised if it doesn't work 'out-of-the-box' L Only some of the Boost libraries are CMake 'enabled', and lots of the ones with lots of dependencies therefore may not work. I suspect you will have to work it out. Make sure that you can build some simple hello_world examples first? Before you try to do something complicated like jinja2cpp. The file structure is complicated for complex reasons, some historical. Running
b2 headers
creates symlinks for each so that /boost/any_library gets you, for example, to \modular-boost\libs\any_library\include\boost modular-boost is the boost root if you are getting develop or master from gihub, or where you downloaded and installed the 1.69 release to. Jinja2Cpp has Boost in the submodules (the code is all on GitHub), but the version of Boost that they have is 1.64. I wonder if that's why it can't find 1.69. Very likely! Could be that the version in the submodule is too old. Probably best to always get Boost stuff direct from the Boost.org site and always use the latest, least buggy - we hope. And find where to tell junja2cpp to look for boost root. Good luck. Paul --- Paul A. Bristow Prizet Farmhouse Kendal UK LA8 8AB +44 (0) 1539 561830
Thanks for the reply. I used MSVC itself this time rather than Clang, though. And standards-conformance mode is turned on with "/permissive-" since nonconformance mode is turned on with "/permissive". By the way, when I had Boost 1.68.0 and I tried to build Jinja2Cpp with that, CMake was able to find it. But for some reason it can't find 1.69.0.
On Sun, 6 Jan 2019 at 20:24, Osman Zakir via Boost-users < boost-users@lists.boost.org> wrote:
Thanks for the reply. I used MSVC itself this time rather than Clang, though. And standards-conformance mode is turned on with "/permissive-" since nonconformance mode is turned on with "/permissive".
What Paul was suggesting is to forget about the conformance-mode and just pick a standard (C++14, the default or C++17), as you are just making your own life difficult by imposing conformance, while Boost has many well tested work-arounds for those non-conformant constructs in MSVC. The imposed conformance itself might also interact badly with those work-arounds. degski -- *“If something cannot go on forever, it will stop" - Herbert Stein*
From: Boost-users [mailto:boost-users-bounces@lists.boost.org] On Behalf Of degski via Boost-users Sent: 06 January 2019 08:01 To: boost-users@lists.boost.org Cc: degski Subject: Re: [Boost-users] I ran b2 with the -d+2 command and redirected the output to a file The output from b2 is in the boost-build.log file. Note the fact that it's saying that "/permissive-" is an extra argument. I was trying to turn on MSVC's standards-conformance mode. How do I do this when building Boost using MSVC without getting this error? b2 doesn't like the dash [-] at the end of permissive [it assumes it's the begin of another flag]. I'm just making this up here, but try to double-quote it. ""/permissive-"", maybe that works, I don't know. If not, you should write to the developer-list: boost@lists.boost.org, as in that case, this needs a fix in the b2-code [as it seems you do it right], or maybe one of the resident gurus knows another way to get that to pass. degski -- “If something cannot go on forever, it will stop" - Herbert Stein I assume you are reading https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-co... I too think that you will need to enclose in quotes to stop b2 assuming that the option is complete. But for now I would stick at selecting a C++ version. https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-st... /std:c++14 perhaps, but 17 or latest if you are allowed. You are in uncharted territory with /permissive- option with Boost? But it is clearly a buglet and should be fixable by the developer, so report it. Paul
participants (3)
-
degski
-
Osman Zakir
-
Paul A. Bristow