将运行时库链接到cmake进行测试

时间:2016-06-07 15:30:03

标签: c++ cmake ctest

有没有简单的方法可以在运行时将本地构建的库链接到使用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. 编写一个执行此操作的包装器脚本,然后调用可执行文件(我当前所拥有的)
  3. 我更喜欢在cmake中做所有事情,因为我认为最好将所有这些配置放在一个地方以避免将来出现错误。

1 个答案:

答案 0 :(得分:0)

添加

CMakeLists.txt

objdump -x Test | grep RPATH 。正如本wiki article中所述。

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

select * from questions where category_id=$category_id ORDER BY RAND() LIMIT 12