我有一个由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/