Closed igormironchik closed 2 months ago
Subject! Not sure if you can fix it with cargo, but subject. It's an issue when you build with C++ and CMake and set RUNPATH, CMake unable to handle this case and keeps in executable full path to libresvg.so.
cargo
libresvg.so
If you curious, I do:
add_library( resvg UNKNOWN IMPORTED ) add_custom_target( build_resvg ALL COMMAND cargo build --release WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/crates/c-api" BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} ) if( UNIX AND NOT APPLE ) add_custom_command( TARGET build_resvg POST_BUILD COMMAND patchelf --set-soname libresvg.so libresvg.so WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release" ) endif() if( WIN32 ) set_target_properties( resvg PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} ) install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX} TYPE BIN ) else() set_target_properties( resvg PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX} ) install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/target/release/${CMAKE_STATIC_LIBRARY_PREFIX}resvg${CMAKE_SHARED_LIBRARY_SUFFIX} TYPE LIB ) endif() set_target_properties( resvg PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/resvg/crates/c-api ) add_dependencies( resvg build_resvg )
Duplicate of #623
Subject! Not sure if you can fix it with
cargo
, but subject. It's an issue when you build with C++ and CMake and set RUNPATH, CMake unable to handle this case and keeps in executable full path tolibresvg.so
.If you curious, I do: