[ https://issues.apache.org/jira/browse/ARROW-6421?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kouhei Sutou reassigned ARROW-6421: ----------------------------------- Assignee: Kouhei Sutou > [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 > Assignee: Kouhei Sutou > 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)