[ 
https://issues.apache.org/jira/browse/LOGCXX-551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17517036#comment-17517036
 ] 

Nicholas Clark commented on LOGCXX-551:
---------------------------------------

{quote}
    You can build with an earlier standard by setting CMAKE_CXX_STANDARD=11 for 
example which would cause the check for std::shared_mutex to fail(since it is 
only in C++17)
    You can pass STD_SHARED_MUTEX_FOUND=0 as you've done already, which could 
change at some point
    We could introduce a new option called something like LOG4CXX_PREFER_BOOST 
that would ignore all checks for anything in the std namespace(except for C++11 
checks)
{quote}

I think STD_SHARED_MUTEX_FOUND=0 satifies what I want.

I am currently able to build certain components with different C++ Standards. 
The CMake we use sets the default standard at C++14, but we have one component 
that uses C++11 still. It's been some time since I checked what standards we 
could update to, but I think there are certain components we have preventing 
everything from using C++17 or newer. All of our dependencies are built with 
C++17. Aside from this log4cxx issue, there have not been linker issues due to 
mixed standards until log4cxx. I'm not sure if that means log4cxx could use 
C++17 for some portions and leave the Boost implementation for threading or 
log4cxx needs to be fully C++17. However, it is clear my application would need 
to be updated to use C++17 threading instead of Boost threading at the current 
full c++17 log4cxx support if a setting to switch between Boost thread and 
shared_mutex goes away.

> CMake documented build option for Boost vs C++17 Implementation for 
> shared_mutex
> --------------------------------------------------------------------------------
>
>                 Key: LOGCXX-551
>                 URL: https://issues.apache.org/jira/browse/LOGCXX-551
>             Project: Log4cxx
>          Issue Type: Wish
>          Components: Build, Documentation
>    Affects Versions: 0.12.1
>            Reporter: Nicholas Clark
>            Assignee: Robert Middleton
>            Priority: Minor
>             Fix For: 0.13.0
>
>
> There was a recent approach to detecting if boost' implementation is needed, 
> but I feel that it is not succinct and cannot be when it comes to linker 
> issues. Referencing PR: 
> [https://github.com/apache/logging-log4cxx/pull/107.|https://github.com/apache/logging-log4cxx/pull/107]
> I have large applications that use shared_mutex, but require boost' 
> implementation as not all components linked are able to use C+\+17 
> implementation at this time. A problem occurs during linkage when log4cxx is 
> built using C+\+17's implementation but our other component is built using 
> boost' implementation.
>  
> *Workaround:*
> We currently can force cmake into using Boost' implementation by passing:
> {code:java}
> -DSTD_SHARED_MUTEX_FOUND=0{code}
> This isn't a documented 'feature'. I would like a documented approach to 
> this. If -DSTD_SHARED_MUTEX_FOUND=0 is what we should use for this feature 
> request, then it should be documented as such. I am putting forth this issue 
> as current usage is not documented as supported and thus I suspect it may be 
> lost in future commits.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to