代码之家  ›  专栏  ›  技术社区  ›  jpo38

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

  •  0
  • jpo38  · 技术社区  · 6 年前

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

    • 一些共享库由程序链接(使用 target_link_libraries 声明)。
    • 其他一些共享库不是由程序链接的,类似于插件:它们在运行时通过 LoadLibrary Win32 API。

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

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

    0 回复  |  直到 6 年前
        1
  •  7
  •   lubgr    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)
    
    推荐文章