diff --git a/cmake/defaults/Packages.cmake b/cmake/defaults/Packages.cmake index 5746dfc912..32029c536c 100644 --- a/cmake/defaults/Packages.cmake +++ b/cmake/defaults/Packages.cmake @@ -139,7 +139,14 @@ endif() # --TBB -find_package(TBB REQUIRED COMPONENTS tbb) +find_package(TBB CONFIG) +if(TBB_DIR) + # Found in CONFIG mode. + set(TBB_tbb_LIBRARY TBB::tbb) +else() + find_package(TBB REQUIRED COMPONENTS tbb) +endif() + add_definitions(${TBB_DEFINITIONS}) # --math @@ -251,7 +258,13 @@ if (PXR_BUILD_IMAGING) endif() # --Opensubdiv set(OPENSUBDIV_USE_GPU ${PXR_BUILD_GPU_SUPPORT}) - find_package(OpenSubdiv 3 REQUIRED) + find_package(OpenSubdiv 3 CONFIG) + if(OpenSubdiv_DIR) + set(OPENSUBDIV_LIBRARIES OpenSubdiv::osdCPU OpenSubdiv::osdGPU) + set(OPENSUBDIV_OSDCPU_LIBRARY OpenSubdiv::osdCPU) + else() + find_package(OpenSubdiv 3 REQUIRED) + endif() # --Ptex if (PXR_ENABLE_PTEX_SUPPORT) find_package(PTex REQUIRED) diff --git a/pxr/CMakeLists.txt b/pxr/CMakeLists.txt index d476fae698..04cccbd517 100644 --- a/pxr/CMakeLists.txt +++ b/pxr/CMakeLists.txt @@ -23,6 +23,13 @@ pxr_core_epilogue() export(PACKAGE pxr) +if(TBB_DIR) + set(PXR_FIND_TBB_IN_CONFIG ON) +endif() +if(OpenSubdiv_DIR) + set(PXR_FIND_OPENSUBDIV_IN_CONFIG ON) +endif() + configure_file(pxrConfig.cmake.in "${PROJECT_BINARY_DIR}/pxrConfig.cmake" @ONLY) install(FILES diff --git a/pxr/pxrConfig.cmake.in b/pxr/pxrConfig.cmake.in index b26f1ea31b..b0c5de1b71 100644 --- a/pxr/pxrConfig.cmake.in +++ b/pxr/pxrConfig.cmake.in @@ -47,6 +47,16 @@ if(@PXR_ENABLE_PYTHON_SUPPORT@) endif() endif() +include(CMakeFindDependencyMacro) + +if(@PXR_FIND_TBB_IN_CONFIG@) + find_dependency(TBB @TBB_VERSION@ CONFIG) +endif() + +if(@PXR_FIND_OPENSUBDIV_IN_CONFIG@) + find_dependency(OpenSubdiv @OpenSubdiv_VERSION@ CONFIG) +endif() + # If MaterialX support was enabled for this USD build, try to find the # associated import targets by invoking the same FindMaterialX.cmake # module that was used for that build. This can be overridden by