|
1 | 1 | add_subdirectory(googletest) |
2 | 2 |
|
3 | | -file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build") |
| 3 | +# Unified TBB Configuration |
| 4 | +option(TBB_TEST "Build TBB tests" OFF) |
| 5 | +option(TBB_EXAMPLES "Build TBB examples" OFF) |
| 6 | +set(TBB_STRICT OFF CACHE BOOL "Treat compiler warnings as errors") |
4 | 7 |
|
5 | | -execute_process( |
6 | | - COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/3rdparty/TBB" -B "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build" -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DTBB_OUTPUT_DIR_BASE=tbb |
7 | | - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build" |
8 | | -) |
9 | | -execute_process( |
10 | | - COMMAND ${CMAKE_COMMAND} --build "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build" --config "${CMAKE_BUILD_TYPE}" |
11 | | - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build" |
12 | | -) |
13 | | - |
14 | | -option(TBB_TEST OFF) |
| 8 | +# Configure TBB with unified settings |
15 | 9 | add_subdirectory(TBB) |
| 10 | + |
| 11 | +# Create a unified TBB interface target |
| 12 | +if(NOT TARGET TBB_unified) |
| 13 | + add_library(TBB_unified INTERFACE) |
| 14 | + target_link_libraries(TBB_unified INTERFACE TBB::tbb) |
| 15 | + target_include_directories(TBB_unified INTERFACE |
| 16 | + $<TARGET_PROPERTY:TBB::tbb,INTERFACE_INCLUDE_DIRECTORIES> |
| 17 | + ) |
| 18 | + |
| 19 | + # Platform-specific runtime library handling for Windows |
| 20 | + if(WIN32) |
| 21 | + # Get the TBB library directory based on build type |
| 22 | + if(CMAKE_BUILD_TYPE) |
| 23 | + string(TOLOWER ${CMAKE_BUILD_TYPE} lower_build) |
| 24 | + set(TBB_LIB_DIR "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build/tbb_${lower_build}") |
| 25 | + else() |
| 26 | + set(TBB_LIB_DIR "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build/tbb_debug") |
| 27 | + endif() |
| 28 | + |
| 29 | + # Create a custom target to copy TBB runtime libraries |
| 30 | + add_custom_target(copy_tbb_runtime ALL |
| 31 | + COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin" |
| 32 | + COMMAND ${CMAKE_COMMAND} -E copy_if_different |
| 33 | + "$<TARGET_FILE:TBB::tbb>" |
| 34 | + "${CMAKE_BINARY_DIR}/bin/" |
| 35 | + COMMENT "Copying TBB runtime libraries" |
| 36 | + ) |
| 37 | + add_dependencies(TBB_unified copy_tbb_runtime) |
| 38 | + endif() |
| 39 | +endif() |
0 commit comments