Imported target "Boost::system" includes non-existent path "/include"

Viewed 707

I am a newbie with CMake please bear with me. I have a library (libvpop) which I created in c++ using some Boost components (system and date_time). I can link to it without a problem in windows but on Ubuntu, I am getting an error that implies the path to the boost include files cannot be found. Here is the simple CMakeLists.txt file.

cmake_minimum_required(VERSION 3.0.0)


set (Boost_DEBUG 1)

project(vpoplibuser)

find_package(fmt CONFIG REQUIRED)
find_package(Boost CONFIG REQUIRED system )
find_package(Boost CONFIG REQUIRED date_time)


add_executable(vpoplibuser vpoplibuser.cpp vpoplib.h)


find_library(VPLIB libvpop HINTS ~/projects/vpoplibuser/ )

message(STATUS "VPLib include dir: ${VPLIB}")


target_include_directories(vpoplibuser PUBLIC  ${PROJECT_SOURCE_DIR} )

target_link_libraries(vpoplibuser PUBLIC ${VPLIB})
target_link_libraries(vpoplibuser PRIVATE fmt::fmt)
target_link_libraries(vpoplibuser PRIVATE Boost::system Boost::date_time)

When I run CMake, I get message: CMake Error in CMakeLists.txt Imported target "Boost::system" includes non-existent path "/include" in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:

  • The path was deleted, renamed, or moved to another location.
  • An install or uninstall procedure did not complete successfully.
  • The installation package was faulty and references files it does not provide.

I have removed and reinstalled Boost. My Boost libraries are at /lib/x86_64-linux-gnu. I cannot figure out exactly where CMake is searching for the boost include file. When I inspect the _BOOST_INCLUDEDIR variable in boost_header-1.71.0/boost_headers-config.cmake it tells me _BOOST_INCLUDEDIR is "/include". I have read something about the PATH variable being an issue so I added /usr to the beginning of my PATH (there is a folder /usr/include/boost which has the boost .hpp files so I was making an assumption that is what CMake is looking for). I have been stuck on this for a couple of days so I would appreciate any advice from the expert community.

1 Answers

I have found a work around thanks to this article: https://github.com/VowpalWabbit/vowpal_wabbit/issues/3003

Something in the Boost cmake process is causing boost to look for the include files at /include when they are really at /usr/include. I created a symbolic link for /include to point to /usr/include and this allowed cmake to find everything. I have not solved the root cause but can move forward with this approach.

Related