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)解决我的问题?
答案 0 :(得分:0)
只需使用生成器表达式:
target_link_libraries(testB PRIVATE $<TARGET_LINKER_FILE:libA>)