【问题标题】:Linking runtime library for test with cmake使用 cmake 链接运行时库以进行测试
【发布时间】:2016-06-07 15:30:03
【问题描述】:

是否有任何简单的方法可以在运行时将本地构建的库链接到使用 CMAKE 的测试?

例如:

enable_testing()
add_executable(Test test/Test.cpp)
target_link_libraries(Test -L../lib/libzmq/build/lib/ zmq)
add_test(
  NAME TestClientZmq
  COMMAND "LD_PRELOAD=../lib/libzmq/build/lib/libzmq.so Test")

运行测试会在运行时抱怨缺少库:

error while loading shared libraries: libzmq.so.4.2.0: cannot open shared object file: No such file or directory

我可以:

  1. 运行 ctest 时设置LD_PRELOAD
  2. 编写一个执行此操作的包装脚本,然后调用可执行文件(我目前拥有的)

不过,我更愿意在 cmake 中完成所有操作,因为我认为最好将所有这些配置保存在一个地方以避免将来出现错误。

【问题讨论】:

标签: c++ cmake ctest


【解决方案1】:

添加

SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

到您的CMakeLists.txt。正如wiki article 中所述。

构建后,使用以下命令确保 RPATH 设置正确:

objdump -x Test | grep RPATH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2014-06-20
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多