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

Robert Middleton commented on LOGCXX-551:
-----------------------------------------

So at least part of the reason for this is that the intention is to not depend 
on third party libraries when possible in order to not have hard dependencies.  
In this particular case that isn't desired.

There's several ways we can solve this:
# 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)

Is one of these better to work with?  They aren't mutually exclusive, so we 
could combine them if required.

> 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