diff --git a/3rdparty/boringssl/boringssl.cmake b/3rdparty/boringssl/boringssl.cmake index 5f9aeea9e33..5048b76648f 100644 --- a/3rdparty/boringssl/boringssl.cmake +++ b/3rdparty/boringssl/boringssl.cmake @@ -48,7 +48,9 @@ ExternalProject_Add( CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS "" + BUILD_BYPRODUCTS + /$<$:$,Debug,Release>/>lib/${CMAKE_STATIC_LIBRARY_PREFIX}ssl${CMAKE_STATIC_LIBRARY_SUFFIX} + /$<$:$,Debug,Release>/>lib/${CMAKE_STATIC_LIBRARY_PREFIX}crypto${CMAKE_STATIC_LIBRARY_SUFFIX} ) ExternalProject_Get_Property(ext_boringssl SOURCE_DIR) diff --git a/3rdparty/curl/curl.cmake b/3rdparty/curl/curl.cmake index c45dbea0dd9..cacdb3c3856 100644 --- a/3rdparty/curl/curl.cmake +++ b/3rdparty/curl/curl.cmake @@ -51,12 +51,13 @@ if(BUILD_CURL_FROM_SOURCE) ${ExternalProject_CMAKE_ARGS_hidden} BUILD_BYPRODUCTS /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}${CMAKE_STATIC_LIBRARY_SUFFIX} + /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}-d${CMAKE_STATIC_LIBRARY_SUFFIX} ) ExternalProject_Get_Property(ext_curl INSTALL_DIR) set(CURL_INCLUDE_DIRS ${INSTALL_DIR}/include/) # "/" is critical. set(CURL_LIB_DIR ${INSTALL_DIR}/${Open3D_INSTALL_LIB_DIR}) - if(MSVC) + if(MSVC AND ${CMAKE_GENERATOR} MATCHES "^Visual Studio.*") set(CURL_LIBRARIES ${curl_lib_name}$<$:-d>) else() set(CURL_LIBRARIES ${curl_lib_name}) @@ -79,7 +80,9 @@ else() CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS "" + BUILD_BYPRODUCTS + /lib/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}${CMAKE_STATIC_LIBRARY_SUFFIX} + /lib/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}-d${CMAKE_STATIC_LIBRARY_SUFFIX} ) ExternalProject_Get_Property(ext_curl SOURCE_DIR) diff --git a/3rdparty/fmt/fmt.cmake b/3rdparty/fmt/fmt.cmake index d7698e1a645..fe276019c64 100644 --- a/3rdparty/fmt/fmt.cmake +++ b/3rdparty/fmt/fmt.cmake @@ -39,4 +39,8 @@ ExternalProject_Add( ExternalProject_Get_Property(ext_fmt INSTALL_DIR) set(FMT_INCLUDE_DIRS ${INSTALL_DIR}/include/) # "/" is critical. set(FMT_LIB_DIR ${INSTALL_DIR}/${Open3D_INSTALL_LIB_DIR}) -set(FMT_LIBRARIES ${FMT_LIB_NAME}$<$:$<$:d>>) +if (MSVC AND ${CMAKE_GENERATOR} MATCHES "^Visual Studio.*") + set(FMT_LIBRARIES ${FMT_LIB_NAME}$<$:d>) +else() + set(FMT_LIBRARIES ${FMT_LIB_NAME}) +endif() diff --git a/3rdparty/ipp/ipp.cmake b/3rdparty/ipp/ipp.cmake index ffc9b320512..deaed2ab179 100755 --- a/3rdparty/ipp/ipp.cmake +++ b/3rdparty/ipp/ipp.cmake @@ -35,6 +35,20 @@ else() set(IPP_SUBPATH "") endif() +# Threading layer libs must be linked first. +# https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-reference/2021-11/ipp-performace-benefits-with-tl-functions.html +# Library dependency order: +# https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-reference/2021-11/library-dependencies-by-domain.html +if (WIN32) + set(IPP_LIBRARIES ipp_iw ippcvmt_tl_tbb ippcvmt ippimt_tl_tbb ippimt ippccmt_tl_tbb ippccmt ippsmt ippvmmt ippcoremt_tl_tbb ippcoremt) +else() + set(IPP_LIBRARIES ipp_iw ippcv_tl_tbb ippcv ippi_tl_tbb ippi ippcc_tl_tbb ippcc ipps ippvm ippcore_tl_tbb ippcore) +endif() + +foreach(item IN LISTS IPP_LIBRARIES) + list(APPEND IPP_BUILD_BYPRODUCTS /${IPP_SUBPATH}lib/${CMAKE_STATIC_LIBRARY_PREFIX}${item}${CMAKE_STATIC_LIBRARY_SUFFIX}) +endforeach() + ExternalProject_Add(ext_ipp PREFIX ipp URL ${IPP_URL} @@ -45,16 +59,10 @@ ExternalProject_Add(ext_ipp CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - ) + BUILD_BYPRODUCTS + ${IPP_BUILD_BYPRODUCTS} +) + ExternalProject_Get_Property(ext_ipp SOURCE_DIR) set(IPP_INCLUDE_DIR "${SOURCE_DIR}/${IPP_SUBPATH}include/") -# Threading layer libs must be linked first. -# https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-reference/2021-11/ipp-performace-benefits-with-tl-functions.html -# Library dependency order: -# https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-reference/2021-11/library-dependencies-by-domain.html -if (WIN32) - set(IPP_LIBRARIES ipp_iw ippcvmt_tl_tbb ippcvmt ippimt_tl_tbb ippimt ippccmt_tl_tbb ippccmt ippsmt ippvmmt ippcoremt_tl_tbb ippcoremt) -else() - set(IPP_LIBRARIES ipp_iw ippcv_tl_tbb ippcv ippi_tl_tbb ippi ippcc_tl_tbb ippcc ipps ippvm ippcore_tl_tbb ippcore) -endif() set(IPP_LIB_DIR "${SOURCE_DIR}/${IPP_SUBPATH}lib") \ No newline at end of file diff --git a/3rdparty/libpng/libpng.cmake b/3rdparty/libpng/libpng.cmake index 963401f1315..9b8349332b6 100644 --- a/3rdparty/libpng/libpng.cmake +++ b/3rdparty/libpng/libpng.cmake @@ -30,4 +30,8 @@ ExternalProject_Add( ExternalProject_Get_Property(ext_libpng INSTALL_DIR) set(LIBPNG_INCLUDE_DIRS ${INSTALL_DIR}/include/) # "/" is critical. set(LIBPNG_LIB_DIR ${INSTALL_DIR}/${Open3D_INSTALL_LIB_DIR}) -set(LIBPNG_LIBRARIES ${LIBPNG_LIB_NAME}$<$:$<$:d>>) +if(MSVC AND ${CMAKE_GENERATOR} MATCHES "^Visual Studio.*") + set(LIBPNG_LIBRARIES ${LIBPNG_LIB_NAME}$<$:d>) +else() + set(LIBPNG_LIBRARIES ${LIBPNG_LIB_NAME}) +endif() diff --git a/3rdparty/uvatlas/uvatlas.cmake b/3rdparty/uvatlas/uvatlas.cmake index 51831059941..63642f80e3d 100644 --- a/3rdparty/uvatlas/uvatlas.cmake +++ b/3rdparty/uvatlas/uvatlas.cmake @@ -52,7 +52,7 @@ ExternalProject_Add( -Ddirectxmath_DIR= DEPENDS ext_directxheaders ext_directxmath BUILD_BYPRODUCTS - /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}uvatlas${CMAKE_STATIC_LIBRARY_SUFFIX} + /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}UVAtlas${CMAKE_STATIC_LIBRARY_SUFFIX} ) diff --git a/3rdparty/vtk/vtk_build.cmake b/3rdparty/vtk/vtk_build.cmake index 271d3789667..f9217f2301e 100644 --- a/3rdparty/vtk/vtk_build.cmake +++ b/3rdparty/vtk/vtk_build.cmake @@ -26,13 +26,13 @@ set(VTK_LIBRARIES vtksys-${VTK_VERSION}${VTK_LIB_SUFFIX} ) -foreach(item IN LISTS VTK_LIBRARIES) - list(APPEND VTK_BUILD_BYPRODUCTS /${Open3D_INSTALL_LIB_DIR}/${item}${CMAKE_STATIC_LIBRARY_SUFFIX}) -endforeach() - if(BUILD_VTK_FROM_SOURCE) + foreach(item IN LISTS VTK_LIBRARIES) + list(APPEND VTK_BUILD_BYPRODUCTS /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${item}${CMAKE_STATIC_LIBRARY_SUFFIX}) + endforeach() + ExternalProject_Add( ext_vtk PREFIX vtk @@ -294,6 +294,10 @@ if(BUILD_VTK_FROM_SOURCE) else() #### download prebuilt vtk + foreach(item IN LISTS VTK_LIBRARIES) + list(APPEND VTK_BUILD_BYPRODUCTS /lib/${item}${CMAKE_STATIC_LIBRARY_SUFFIX}) + endforeach() + if(LINUX_AARCH64) message(FATAL "No precompiled vtk for platform. Enable BUILD_VTK_FROM_SOURCE") elseif(APPLE_AARCH64) @@ -334,7 +338,8 @@ else() #### download prebuilt vtk CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" - BUILD_BYPRODUCTS "" + BUILD_BYPRODUCTS + ${VTK_BUILD_BYPRODUCTS} ) ExternalProject_Get_Property(ext_vtk SOURCE_DIR) diff --git a/3rdparty/zeromq/zeromq_build.cmake b/3rdparty/zeromq/zeromq_build.cmake index 12d7a6fa9d8..0a39746b675 100644 --- a/3rdparty/zeromq/zeromq_build.cmake +++ b/3rdparty/zeromq/zeromq_build.cmake @@ -68,9 +68,6 @@ ExternalProject_Add( ) if(WIN32) - # On windows the lib name is more complicated - set(ZEROMQ_LIBRARIES ${lib_name}$<$:gd>${lib_suffix}) - # On windows we need to link some additional libs. We will use them # directly as targets in find_dependencies.cmake. # The following code is taken from the zeromq CMakeLists.txt and collects @@ -95,6 +92,9 @@ if(WIN32) if(HAVE_IPHLPAPI) list(APPEND ZEROMQ_ADDITIONAL_LIBS iphlpapi) endif() +endif() +if(MSVC AND ${CMAKE_GENERATOR} MATCHES "^Visual Studio.*") + set(ZEROMQ_LIBRARIES ${lib_name}$<$:gd>${lib_suffix}) else() set(ZEROMQ_LIBRARIES ${lib_name}${lib_suffix}) endif() diff --git a/3rdparty/zlib/zlib.cmake b/3rdparty/zlib/zlib.cmake index f0d756b5e75..d56f7431d0b 100644 --- a/3rdparty/zlib/zlib.cmake +++ b/3rdparty/zlib/zlib.cmake @@ -31,7 +31,7 @@ ExternalProject_Add( ExternalProject_Get_Property(ext_zlib INSTALL_DIR) set(ZLIB_INCLUDE_DIRS ${INSTALL_DIR}/include/) # "/" is critical. set(ZLIB_LIB_DIR ${INSTALL_DIR}/lib) -if(MSVC) +if(MSVC AND ${CMAKE_GENERATOR} MATCHES "^Visual Studio.*") set(ZLIB_LIBRARIES ${lib_name}$<$:d>) else() set(ZLIB_LIBRARIES ${lib_name}) diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index 3d58a53ad84..d500e3e9b80 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -53,10 +53,13 @@ open3d_show_and_abort_on_warning(tests) open3d_set_global_properties(tests) # On Windows, running tests from the build folder needs tbb.dll to be in the same folder. if (WIN32) + get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + message(STATUS "GENERATOR_IS_MULTI_CONFIG: ${IS_MULTI_CONFIG}") add_custom_command( TARGET tests POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/" + COMMAND echo "RUNTIME_OUTPUT_DIRECTORY: $/$<$:$>" + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $/$<$:$> ) endif()