MSVC: Fix linker issue with USD
USD requires to be linked with /WHOLEARCHIVE so the linker won't remove their static initializers. This strangely has never worked for MSVC since the flags were set on the LINK_FLAGS property which is only used to link .dll and .exe files, given this is a static lib, the flags were not used, nor did CMake propagate the link directive to the final targets that did link. Not quite sure how this has not lead to more problems in the past. Setting the link directive on the INTERFACE_LINK_OPTIONS makes cmake do the right thing. Differential Revision: https://developer.blender.org/D14394 Reviewed by: sybren
This commit is contained in:
parent
19bcfba56f
commit
2631b44e71
|
@ -107,10 +107,10 @@ list(APPEND LIB
|
|||
blender_add_lib(bf_usd "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
||||
|
||||
if(WIN32)
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " /WHOLEARCHIVE:${USD_DEBUG_LIB}")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " /WHOLEARCHIVE:${USD_RELEASE_LIB}")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO " /WHOLEARCHIVE:${USD_RELEASE_LIB}")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL " /WHOLEARCHIVE:${USD_RELEASE_LIB}")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY INTERFACE_LINK_OPTIONS "$<$<CONFIG:Debug>:/WHOLEARCHIVE:${USD_DEBUG_LIB}>")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY INTERFACE_LINK_OPTIONS "$<$<CONFIG:Release>:/WHOLEARCHIVE:${USD_RELEASE_LIB}>")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY INTERFACE_LINK_OPTIONS "$<$<CONFIG:RelWithDebInfo>:/WHOLEARCHIVE:${USD_RELEASE_LIB}>")
|
||||
set_property(TARGET bf_usd APPEND_STRING PROPERTY INTERFACE_LINK_OPTIONS "$<$<CONFIG:MinSizeRel>:/WHOLEARCHIVE:${USD_RELEASE_LIB}>")
|
||||
endif()
|
||||
|
||||
# Source: https://github.com/PixarAnimationStudios/USD/blob/master/BUILDING.md#linking-whole-archives
|
||||
|
|
Loading…
Reference in New Issue