LD_LIBRARY_PATH для gtest_discover_tests (в QtCreator?)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 LD_LIBRARY_PATH для gtest_discover_tests (в QtCreator?)

Сообщение Anonymous »

У меня есть проект CMAKE, который содержит два подкаталога: библиотеку и тесты. Когда приходит время перечислить тесты, gtest_discover_tests запускает исполняемый файл теста, но поскольку исполняемый файл теста находится в родственном каталоге тестируемой библиотеки, он, похоже, не находит его. Если я запускаю его через терминал и устанавливаю LD_LIBRARY_PATH, все работает нормально. Есть ли способ CMAKE установить LD_LIBRARY_PATH для процесса компиляции? Я могу принудительно использовать его в своей IDE, но это небезопасно для других людей, пытающихся его скомпилировать.
foo/CMakeLists.txt

Код: Выделить всё

cmake_minimum_required(VERSION 3.10)

project(foo)

add_subdirectory(library)
add_subdirectory(tests)
foo/library/CMakeLists.txt

Код: Выделить всё

add_library(foo SHARED foo.cpp foo.h)
foo/tests/CMakeLists.txt

Код: Выделить всё

enable_testing()

include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
)

FetchContent_MakeAvailable(googletest)

include_directories(../library)

add_executable(foo_test foo_test.cpp)
target_link_libraries(foo_test PRIVATE gtest_main foo)

include(GoogleTest)
gtest_discover_tests(foo_test)
точный вывод ошибок

Код: Выделить всё

[1/1 5.1/sec] Linking CXX executable tests/foo_test
FAILED: tests/foo_test tests/foo_test[1]_tests.cmake
: && /usr/lib/ccache/clang++-11 --target=x86_64-pc-linux-gnu --sysroot=/ -g  tests/CMakeFiles/foo_test.dir/foo_test.cpp.o -o tests/foo_test -L/home/adam/workspace-qt/foo/tests/../library -Wl,-rpath,home/adam/workspace-qt/foo/tests/../library:home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/library  lib/libgtest_maind.a  library/libfoo.so  mbedtls/library/libmbedtls.a  lib/libgtestd.a  -lpthread  mbedtls/library/libmbedx509.a  mbedtls/library/libmbedcrypto.a && cd /home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/tests && /home/adam/Qt/Tools/CMake/bin/cmake -D TEST_TARGET=foo_test -D TEST_EXECUTABLE=/home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/tests/foo_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/tests -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=foo_test_TESTS -D CTEST_FILE=/home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/tests/foo_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -D TEST_XML_OUTPUT_DIR= -P /home/adam/Qt/Tools/CMake/share/cmake-3.19/Modules/GoogleTestAddTests.cmake
/home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/tests/foo_test: error while loading shared libraries: libfoo.so: cannot open shared object file: No such file or directory
CMake Error at /home/adam/Qt/Tools/CMake/share/cmake-3.19/Modules/GoogleTestAddTests.cmake:77 (message):
Error running test executable.

Path: '/home/adam/workspace-qt/build-foo-Clang_Desktop-Debug/tests/foo_test'
Result: 127
Output:

Call Stack (most recent call first):
/home/adam/Qt/Tools/CMake/share/cmake-3.19/Modules/GoogleTestAddTests.cmake:173 (gtest_discover_tests_impl)

ninja: build stopped: subcommand failed.
15:56:10: The process "/home/adam/Qt/Tools/CMake/bin/cmake" exited with code 1.
Error while building/deploying project foo (kit: Clang-Desktop)
When executing step "Build"
15:56:10: Elapsed time: 00:01.
РЕДАКТИРОВАТЬ:
Обсуждение с @Tsyvarev показало, что QtCreator, возможно, не помещает полный путь в RPATH/RUNPATH. (т.е. «дом/...» вместо «/дом/...»).

Подробнее здесь: https://stackoverflow.com/questions/710 ... -qtcreator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»