c++ - CMake:如何添加不是 "link"依赖项的依赖项

标签 c++ cmake

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

  • 某些共享库由程序链接(使用 target_link_libraries 语句)。
  • 其他一些共享库不由程序链接,例如插件:它们在运行时通过 LoadLibrary Win32 API 加载。

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

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

最佳答案

有一个 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)

关于c++ - CMake:如何添加不是 "link"依赖项的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428061/

相关文章:

linker - CMake:如何生成二进制文件 "as static as possible"

windows - 在 cmake 中设置 curl 库路径

C++ 标准 :search behavior or restriction

c++ - CMakeExternalProject_Add : How to build multiple msbuild targets?

c++ - 如何找到 Microsoft Visual C++ 中使用的编译预处理器

c++ - 如何在轮廓 OpenCV 中获得最大面积?

windows - 如何在 Windows 上为 CMake 自定义命令设置运行时路径

linker - CMake:将(独立)库拆分为不同的 target_link_libraries 调用?

c++ - WM_MBUTTONDOWN 不起作用

c++ - 反转 __m512i 寄存器中的值