CMake:如何添加不是“链接”依赖项的依赖项

jpo*_*o38 6 c++ cmake

我有一个由配置的项目CMake。它有一个程序和一些共享库。

  • 某些共享库通过程序链接(使用target_link_libraries语句)。
  • 某些共享库未通过程序链接,而是通过插件链接:它们在运行时通过LoadLibraryWin32 API 加载。

我们使用Visual Studio 2015作为CMake目标编译器。但是从此IDE,当我在修改一些代码后启动程序(按F5键)时,只会编译该程序和链接的共享库。在运行时加载的“插件”未编译,因此代码与二进制文件不匹配。

有没有一种添加“构建依赖项”的方法,即如果在执行程序之前过时了某些库,即使最后一个库没有链接它们,也应该对其进行编译?

lub*_*bgr 6

正是为此目的提供了一个CMake命令:add_dependencies。它应该做您想要的。例:

add_executable(mainTarget SomeSource.cpp)
add_library(linkedLib SomeOtherSource.cpp)
add_library(libToBeLoaded MODULE MoreSource.cpp)

target_link_libraries(mainTarget PRIVATE linkedLib)

# This is it:
add_dependencies(mainTarget libToBeLoaded)
Run Code Online (Sandbox Code Playgroud)