CMake: проверка связи с библиотекой в ​​каталоге сборки, а не с установленной версией - PullRequest
0 голосов
/ 27 мая 2019

cmake; make; ctest; make install работает нормально: генерирует libA, запускает testB и устанавливает libA в ${CMAKE_INSTALL_LIBDIR}.

Теперь я изменяю libA и перезапускаю make; ctest. Никакой реакции на мои модификации: ldd testB показывает, что используется установленная версия libA. Что является чепухой для теста. Тест должен всегда использовать локальную версию libA, никогда установленную.

Я видел много советов, касающихся RPATH, но не нашел варианта, который помог бы.

Так что я жестко запрограммировал путь, изменив

target_link_libraries(testB PRIVATE A)

в

target_link_libraries(testB PRIVATE ${CMAKE_BINARY_DIR}/lib/libA.so).

Это работает, но больше не зависит от платформы. Как решить мою проблему так, чтобы она работала кроссплатформенно, включая Windows?

1 Ответ

0 голосов
/ 28 мая 2019

Просто используйте выражение генератора :

target_link_libraries(testB PRIVATE $<TARGET_LINKER_FILE:libA>)
...