2016-06-07 23 views
0

有什麼簡單的方法可以將運行時本地構建的庫鏈接到CMAKE測試?鏈接運行時庫用於測試與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. LD_PRELOAD運行CTEST
  2. 寫一個包裝腳本H的確這一點,然後調用可執行文件(我有什麼目前)

我寧願做在cmake的一切,雖然,因爲我認爲這是最好把所有這些配置在一個地方,以避免在未來的bug 。

+0

你嘗試設置連接選項['-Wl,-rpath = ...'](HTTPS: //cmake.org/Wiki/CMake_RPATH_handling)? – gdlmx

回答

0

添加

SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

CMakeLists.txt。正如在wiki article中所解釋的那樣。

構建之後,可以使用下面的命令,以確保RPATH設置正確:

objdump -x Test | grep RPATH