我正在使用CMake构建和链接以下应用。
add_executable(my_node main.cpp)
target_link_libraries(my_node dynamic_lib my_dependency)
my_node
的来源不直接使用dynamic_lib
。 my_dependency
要求dynamic_lib
才能运行。
使用readelf和ldd,可以看到在dynamic_lib
上找不到my_node
;我的应用无法启动。我可以通过设置LD_LIBRARY_PATH
来启动该应用。
LD_LIBRARY_PATH="/path/to/dynamic_lib_dir" bash -c './my_node'
或者,如果我在dynamic_lib
源中使用来自my_node
的类,那么一切都可以。我认为我在这里缺少一些CMake配置来强制my_node
直接与dynamic_lib
链接。如何将所有这些都整齐地捆起来?