【发布时间】:2021-10-25 16:31:43
【问题描述】:
这里有无数类似的问题,但我找不到能准确解决这个问题的问题:
我正在使用 CMake 构建共享库 a 和 b 以及可执行文件 prog。 prog 应该与a 链接,但不能与b 链接。但是,与此同时,我希望在 b 过时时重建 prog。实际上,b 是构建prog 时使用的编译器插件。
我试过了:
add_library(a a.cc)
add_library(b b.cc)
add_dependencies(a b)
add_executable(prog prog.cc)
target_link_libraries(prog PRIVATE a)
但这不起作用,当 b 需要重建时,这不会导致 prog 也被重建。
我也试过了:
add_library(a a.cc)
add_library(b b.cc)
target_link_libraries(a INTERFACE b)
add_executable(prog prog.cc)
target_link_libraries(prog PRIVATE a)
但这会导致prog 链接到b。有没有办法做到这一点?
【问题讨论】:
-
I want prog to be rebuilt whenever b is outdated有什么用?他们是无关的。b is a compiler plugin used while building prog“如何”究竟是“使用”?将prog.cc构建到目标文件或将prog链接在一起时?