This used to work but after a rather big jump in CMake version I am seeing a strange behaviour on a lib that I build with cmake. live555. It has a def file and now cmake has modified my def file and added/update the ;Library line to
;LIBRARY “${LIVE555_x64_DLL_NAME}”
When I change the project name or the DEBUG_POSTFIX, the dll and lib change names but when the exe runs it ALWAYS now tries to open Live555.dll and fails.
The def file name is Live555_x64.def and that seems to be the only place the string “Live555” is currently.
Is debug/release shared library broken on windows for those with def files?
cmake version is 3.21.0-rc2
Relevant section of CMake :
if (WIN32)
if( ${CMAKE_VS_PLATFORM_NAME} STREQUAL “x64” )
SET (DEF_FILE “${LIVE555_ROOT}/Live555_x64.def”)
else()
SET (DEF_FILE “${LIVE555_ROOT}/Live555.def”)
endif()
endif()
…
add_library( ${PROJECT_NAME} SHARED
${GROUPSOCK_HEADERS} ${GROUPSOCK_SOURCES}
${EVLIVE555_HEADERS} ${EVLIVE555_SOURCES}
${BASICUSAGEENVIRONMENT_HEADERS} ${BASICUSAGEENVIRONMENT_SOURCES}
${USAGEENVIRONMENT_HEADERS} ${USAGEENVIRONMENT_SOURCES}
${TRANSPORT_HEADERS} ${TRANSPORT_SOURCES}
${LIVEMEDIA_HEADERS} ${LIVEMEDIA_SOURCES}
“${DEF_FILE}”
)
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
target_include_directories( ${PROJECT_NAME}
PUBLIC
${PUBLIC_LIVE555_INCLUDE_DIRS}
${BASICUSAGEENVIRONMENT_INCLUDE_DIR}
${GROUPSOCK_INCLUDE_DIR}
${USAGEENVIRONMENT_INCLUDE_DIR}
${TRANSPORT_INCLUDE_DIR}
${LIVEMEDIA_INCLUDE_DIR}
)
#SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME}-${MAJOR_VERSION_NUMBER})
#set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME ${PROJECT_NAME}-${MAJOR_VERSION_NUMBER})
set_property(TARGET ${PROJECT_NAME} PROPERTY DEBUG_POSTFIX “d”)
set_property(TARGET ${PROJECT_NAME} PROPERTY CMAKE_LINK_DEF_FILE_FLAG “/DEF:${DEF_FILE}”)