【发布时间】:2021-12-10 23:53:19
【问题描述】:
假设我有一个库 A 和一个使用 A 的项目 B。
project(libA)
function(calledWhenLink target)
message(STATUS Hi ${target}) # Should print "Hi exeB"
endfunction()
add_library(libA INTERFACE)
project(exeB)
find_package(A REQUIRED)
target_link_library(exeB libA)
可执行文件链接到库时是否可以自动调用calledWhenLink()?
推理:正如评论中所说,原来的问题是VTK需要调用CMake vtk_module_autoinit。我的库使用 VTK,所有示例在链接到 lib 时自动调用它似乎更好,而不是复制粘贴每个 CMakeLists 中的代码。问题是 vtk_module_autoinit 在我的测试中使用 lib 目标而不是 exe 调用时不起作用。
【问题讨论】:
-
我对此表示怀疑,但您始终可以创建自己的
link_with_libA函数来执行对target_link_library的调用以及您需要的任何特殊行为。 -
无论如何我都会使用自定义函数。
-
听起来像是 XY 问题。你到底想达到什么目的?
-
VTK 需要调用 CMake vtk_module_autoinit。我的库使用 VTK,所有示例在链接到 lib 时自动调用它似乎更好,而不是复制粘贴每个 CMakeLists 中的代码。问题是 vtk_module_autoinit 在我的测试中使用 lib 目标而不是 exe 调用时不起作用。
标签: cmake