gpt4 book ai didi

c++ - CMake 包含第 3 方项目

转载 作者:行者123 更新时间:2023-11-28 04:58:21 29 4
gpt4 key购买 nike

我的背景是常规 makefile,我正在尝试将我们的项目转换为 CMake 设置。

当我尝试将 g3log 作为子项目时,我遇到了困难。

我在 CMakeLists.txt 中添加了以下行。请注意,../../external/g3log_src 是第三方产品的顶级目录。

target_link_libraries( myproject LINK_PUBLIC ${Boost_LIBRARIES} g3log)
set(DG3_SHARED_LIB OFF)
include_directories("../../external/g3log_src/include")
add_subdirectory (../../external/g3log_src LIBRARY_OUTPUT_PATH/g3log)

但是,它实际上不会构建 g3log,所以我无法链接它:ld: 找不到 -lg3log 的库

有一条线

project (g3log)

包含在 g3log CMakeLists.txt 中

我想我在这里遗漏了一些基本且简单的东西,但我缺少有关如何解决该问题的指导。感谢您的帮助。

最佳答案

与 3d 方库链接时,您应该使用库名称,而不是项目名称。对于 g3log,库名称是 g3logger

此外,构建 3d 方项目应该预先使用它:

add_subdirectory (../../external/g3log_src g3log)
...
target_link_libraries( myproject LINK_PUBLIC ${Boost_LIBRARIES} g3logger)

这是因为应该使用 目标名称 执行链接,CMake 只有在处理 3d 方项目后才知道该名称。

否则,您只是将 -lg3logger 选项传递给链接器,但链接器找不到该库,因为它目前尚未构建。

关于c++ - CMake 包含第 3 方项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46683223/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com