[
https://issues.apache.org/jira/browse/ARROW-6421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17026890#comment-17026890
]
Antoine Pitrou commented on ARROW-6421:
---------------------------------------
cc [~kou]
> [C++] Headers of system Boost not found in non-standard location
> ----------------------------------------------------------------
>
> Key: ARROW-6421
> URL: https://issues.apache.org/jira/browse/ARROW-6421
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
> Reporter: Ingo Müller
> Priority: Minor
>
> On a system that does not have boost installed in a default location, but in
> a non-default one, the boost headers are not found during compilation. This
> is true even though CMake correctly finds the Boost installation, e.g.,
> through CMAKE_PREFIX_PATH.
> The problem is the function ADD_ARROW_LIB LIB_NAME in
> cpp/cmake_modules/BuildUtils.cmake, which defines a target
> "{$LIB_NAME]_objlib" without the required dependencies (without any
> dependencies, actually). The required _compile-time_ dependencies are
> specified as properties of the corresponding_"_targets", for example, of the
> Boost::filesystem target. They should be added as dependencies using
> target_link_libraries (even though the name suggests that this is only for
> _link-time_ dependencies).
> The following patch solves the problem, but might not be the best solution:
> {noformat}
> diff --git a/cpp/cmake_modules/BuildUtils.cmake
> b/cpp/cmake_modules/BuildUtils.cmake
> index ecfa593a0..c2b744766 100644
> --- a/cpp/cmake_modules/BuildUtils.cmake
> +++ b/cpp/cmake_modules/BuildUtils.cmake
> @@ -251,6 +251,13 @@ function(ADD_ARROW_LIB LIB_NAME)
> SOVERSION
> "${ARROW_SO_VERSION}")+
> target_link_libraries(${LIB_NAME}_objlib
> + LINK_PUBLIC
> + "$<BUILD_INTERFACE:${ARG_SHARED_LINK_LIBS}>"
> +
> "$<INSTALL_INTERFACE:${ARG_SHARED_INSTALL_INTERFACE_LIBS}>"
> + LINK_PRIVATE
> + ${ARG_SHARED_PRIVATE_LINK_LIBS})
> +
> target_link_libraries(${LIB_NAME}_shared
> LINK_PUBLIC
>
> "$<BUILD_INTERFACE:${ARG_SHARED_LINK_LIBS}>"{noformat}
> {{Steps to reproduce:}}
> # Make sure you don't have boost installed.
> # Install boost to /opt/boost-1.70.0 (or similar).
> # export CMAKE_PREFIX_PATH=/opt/boost-1.70.0
> # Compile the cpp project without setting -DBOOST_SOURCE or similar. Make
> sure CMake found your Boost installation in /opt
--
This message was sent by Atlassian Jira
(v8.3.4#803005)