You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.6 KiB
64 lines
1.6 KiB
if(TARGET Boost::boost)
|
|
return()
|
|
endif()
|
|
|
|
message(STATUS "Third-party: creating targets 'Boost::boost'...")
|
|
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
boost-cmake
|
|
GIT_REPOSITORY https://github.com/libigl/boost-cmake.git
|
|
GIT_TAG 6bcae68ffbaaefad4583a2642ce9ea53e5e01707
|
|
)
|
|
|
|
set(PREVIOUS_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
|
set(OLD_CMAKE_POSITION_INDEPENDENT_CODE ${CMAKE_POSITION_INDEPENDENT_CODE})
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# This guy will download boost using FetchContent
|
|
FetchContent_GetProperties(boost-cmake)
|
|
if(NOT boost-cmake_POPULATED)
|
|
FetchContent_Populate(boost-cmake)
|
|
# File lcid.cpp from Boost_locale.cpp doesn't compile on MSVC, so we exclude them from the default
|
|
# targets being built by the project (only targets explicitly used by other targets will be built).
|
|
add_subdirectory(${boost-cmake_SOURCE_DIR} ${boost-cmake_BINARY_DIR} EXCLUDE_FROM_ALL)
|
|
endif()
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ${OLD_CMAKE_POSITION_INDEPENDENT_CODE})
|
|
set(CMAKE_CXX_FLAGS "${PREVIOUS_CMAKE_CXX_FLAGS}")
|
|
|
|
# Set VS target folders
|
|
set(boost_modules
|
|
container
|
|
regex
|
|
atomic
|
|
exception
|
|
chrono
|
|
wave
|
|
context
|
|
coroutine
|
|
date_time
|
|
fiber
|
|
filesystem
|
|
graph
|
|
iostreams
|
|
locale
|
|
log
|
|
log_setup
|
|
unit_test_framework
|
|
math
|
|
program_options
|
|
timer
|
|
random
|
|
serialization
|
|
system
|
|
thread
|
|
type_erasure
|
|
)
|
|
foreach(module IN ITEMS ${boost_modules})
|
|
if(TARGET Boost_${module})
|
|
set_target_properties(Boost_${module} PROPERTIES FOLDER ThirdParty/Boost)
|
|
endif()
|
|
endforeach()
|
|
|
|
|