c++ - 何时将库包含在 target_link_libraries 中

标签 c++ cmake

假设我有一个可执行的 Alpha,它必须链接到一个共享库 Beta。 Beta 本身依赖于共享库 Gamma。 Gamma 对我来说已经存在,但我必须使用 cmake 自己编译 Alpha 和 Beta。

因此,对于两个 CMakeLists.txt 文件,Alpha 和 Beta 各一个,我使用命令 target_link_libraries 来指示编译需要哪些库。我的问题是:我需要在这两个 CMakeLists.txt 文件中的哪个文件中添加 Gamma?

Beta 直接依赖于 Gamma,因为 Beta 中的代码调用 Gamma 中的函数。但是,Alpha 也间接依赖于 Gamma,所以我需要将此告诉 Alpha 的 CMakeLists.txt 文件吗?

最佳答案

如果 CMake 了解 Beta->Gamma 依赖项,它应该能够使一切正常工作。如果在某些情况下您在构建 Beta 时没有告诉 CMake 它对 Gamma 的依赖性(这是可能的),那么您将不得不明确表达 Alpha->Gamma 依赖性。

关于c++ - 何时将库包含在 target_link_libraries 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27842227/

相关文章:

C++ - 写入文件 - Utf16LE

c++ - 使用替代解析器 boost spirit 不佳的性能

c++ - 使用 CATCH C++ 单元测试框架测试两个 std::vectors 是否相等

python - 在构建需要编译代码的模块时将自定义 CMake 标志传递给 pip

c++ - 如何在不同的CMakeList.txt之间共享变量?

python - 安装 dlib python 模块出现段错误

cmake clang-tidy(或其他脚本)作为自定义目标

c++ - 异常抛出异常

c++ - 将二进制文件添加到其他人的柯南食谱中

c++ - "Cannot open include file"当实现使用 CMake 实现 GLM 的库时