如何将包含目录从ExternalProject_Add添加到项目中?

时间:2019-08-02 18:07:08

标签: cmake

我尝试了following this solution this individual has from this question。我正在尝试通过与我的Source分开的目录中的以下cmake文件通过boost进行此操作:

#---------------------------------------------------------------------------
# Get and build boost

SET_PROPERTY(DIRECTORY PROPERTY "EP_BASE" ${ep_base})
SET(boost_GIT_TAG "origin/master")
set( Boost_Bootstrap_Command )

if( UNIX )
  set( Boost_Bootstrap_Command ./bootstrap.sh )
  set( Boost_b2_Command ./b2 )
else()
  if( WIN32 )
    set( Boost_Bootstrap_Command bootstrap.bat )
    set( Boost_b2_Command b2.exe )
  endif()
endif()

ExternalProject_Add(Boost_external_Download
  GIT_REPOSITORY "https://github.com/boostorg/boost.git"
  GIT_TAG ${boost_GIT_TAG}
  BUILD_IN_SOURCE 1
  UPDATE_COMMAND ""
  PATCH_COMMAND ""
  CONFIGURE_COMMAND ${Boost_Bootstrap_Command}
  BUILD_COMMAND  ${Boost_b2_Command} install
    --without-python
    --without-mpi
    --disable-icu
    --prefix=${CMAKE_BINARY_DIR}/Boost
    --threading=single,multi
    --link=shared
    --variant=release
    -j8
  INSTALL_COMMAND ""
  INSTALL_DIR ""
)


if( NOT WIN32 )
  set(Boost_LIBRARY_DIR ${CMAKE_BINARY_DIR}/Boost/lib/ )
  set(Boost_INCLUDE_DIR ${CMAKE_BINARY_DIR}/Boost/include/boost/ )
else()
  set(Boost_LIBRARY_DIR ${CMAKE_BINARY_DIR}/Boost/lib/ )
  set(Boost_INCLUDE_DIR ${CMAKE_BINARY_DIR}/Boost/include/boost/ )
endif()

ExternalProject_Get_Property(Boost_external_Download BINARY_DIR)
SET(Boost_DIR ${BINARY_DIR} CACHE PATH "")

add_library(Boost_external SHARED IMPORTED)

解决方案之一与我的解决方案之间唯一的不同是添加库后我没有set_target_properties。由于boost有很多库,我不确定要添加什么。

在我的源文件夹中,我的CMakeLists.txt执行以下操作:

include_directories(${Boost_INCLUDE_DIR})

add_executable(Main main.cpp)
target_link_libraries(Main Boost_external)
add_dependencies(Main Boost_external_Download)

但是,在main.cpp中,当我使用#include <boost/process.hpp>只是为了查看它是否链接时,在尝试制作项目时出现了#include <boost/process.hpp> no such file or directory.的错误。我不太确定这是哪里出了问题,因此请提供任何有益的建议。

编辑:结构

Root Folder
|
- CmakeLists.txt
- Externals Directory
  |
  | - Externals.cmake
  | - boostExternal.cmake
  | - other external cmake files
- Source Directory
  |
  | - CmakeLists.txt
  | - main.cpp

根Cmake调用Externals.cmake文件。然后,该文件包括该目录中的所有其他Cmake文件。完成这些操作后,根Cmake文件将添加目录Source,并且该Cmake文件将调用include_directories(${Boost_INCLUDE_DIR})

0 个答案:

没有答案