首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将链接器目录添加到cmake gtest_discover_tests

问如何将链接器目录添加到cmake gtest_discover_tests
EN

Stack Overflow用户
提问于 2020-08-14 04:34:30
回答 1查看 361关注 0票数 0

我在我的项目中使用了cmake和gtest。我的gtest可执行文件使用与程序可执行文件相同的名称。我知道这并不理想,但我不能改变它。

我正在使用的编译器安装在不同的目录下,而不是安装在较旧的系统GCC的目录下。我已经使用以下命令设置了编译器路径:

代码语言:javascript
复制
set(CMAKE_C_COMPILER /opt/gcc-5.4.0/bin/gcc-5.4.0)
set(CMAKE_CXX_COMPILER /opt/gcc-5.4.0/bin/g++-5.4.0)

在链接我的可执行文件时,我使用的是target_link_directories:

代码语言:javascript
复制
target_link_directories(target PUBLIC /opt/gcc-5.4.0/lib /opt/gcc-5.4.0/lib64)

在没有gtest的情况下,目标可以正常编译、链接和运行,但是在添加gtest:

代码语言:javascript
复制
  gtest_discover_tests(target WORKING_DIRECTORY <gtests_soruce_dir>)

gtest目标链接失败:

代码语言:javascript
复制
target: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by executable_name)
target: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by executable_name)
target: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by executable_name)
target: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by executable_name)

CMake Error at /home/gilkalish/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/202.6397.106/bin/cmake/linux/share/cmake-3.17/Modules/GoogleTestAddTests.cmake:40 (message):
  Error running test executable.

    Path: 'executable_path'
    Result: 1
    Output:

这是链接可执行文件之后,链接gtest的最后一步。

代码语言:javascript
复制
/usr/bin/cmake3 -D TEST_TARGET=target -D TEST_EXECUTABLE=<target_path>/target -D TEST_EXECUTOR= -D TEST_WORKING_DIR=<test_path> -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=target_TESTS -D CTEST_FILE=target[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -P 

我可以使用LD_LIBRARY_PATH将路径添加到我的自定义GCC库中,然后链接工作,但我希望找到一个解决方案,允许我在cmake中指定在链接测试时在哪里查找该库。

我还尝试更新到cmake 3.18,得到了相同的结果。任何建议都将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-27 07:48:46

当我要求CMake在构建过程中使用install RPATH时,解决了TL;DR问题

代码语言:javascript
复制
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)

更多细节: CMake GTest模块正在运行可执行文件,以枚举在make期间链接的测试(不太确定原因)。这是失败的,因为此时尚未设置安装RPATH。它仅在make install期间设置以克服此问题,您可以要求CMake在构建时添加install RPATH。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63402829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档