Ingo Müller created ARROW-6421:
----------------------------------
Summary: 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
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.2#803003)