CMake:对构建目录中的库进行链接测试,而不对已安装版本进行

时间:2019-05-27 14:51:19

标签: unit-testing cmake linker install cross-platform

cmake; make; ctest; make install工作正常:生成libA,运行testB,然后将libA安装到${CMAKE_INSTALL_LIBDIR}

现在,我修改libA,然后重新运行make; ctest。对我的修改没有反应:ldd testB显示使用了libA已安装版本。对于测试来说,这毫无意义。该测试应该始终使用libA的本地版本,从不已安装的版本。

我看到很多涉及RPATH的建议,但没有找到任何有用的建议。

所以我通过更改对路径进行了硬编码

target_link_libraries(testB PRIVATE A)

进入

target_link_libraries(testB PRIVATE ${CMAKE_BINARY_DIR}/lib/libA.so).

这有效,但不再与平台无关。如何以跨平台的方式(包括Windows)解决我的问题?

1 个答案:

答案 0 :(得分:0)

只需使用生成器表达式

target_link_libraries(testB PRIVATE $<TARGET_LINKER_FILE:libA>)