加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

CMake项目共享依赖项

发布时间:2020-12-14 04:52:57 所属栏目:百科 来源:网络整理
导读:我有: 共享库X,它是独立的 使用X的共享库Y. 一个可执行的Z,它使用X和Y. 它们都有自己的CMakeLists.txt,可以独立配置和构建. 但是,我无法使可执行文件(Z)的CMakeLists.txt工作. 我的方法是: foreach(clib ${OWN_LIBS}) set(LIBS "${LIBS} ${clib}") set(CLI
我有:

>共享库X,它是独立的
>使用X的共享库Y.
>一个可执行的Z,它使用X和Y.

它们都有自己的CMakeLists.txt,可以独立配置和构建.

但是,我无法使可执行文件(Z)的CMakeLists.txt工作.

我的方法是:

foreach(clib ${OWN_LIBS})
   set(LIBS "${LIBS} ${clib}")
   set(CLIB_DIR "${PROJECT_SOURCE_DIR}/../lib${clib}")
   set(CLIB_BUILD_DIR "${CLIB_DIR}/build")

   add_subdirectory("${CLIB_DIR}" "${CLIB_BUILD_DIR}")
   include_directories("${CLIB_DIR}/incl")
   link_directories("${CLIB_BUILD_DIR}")
endforeach(clib)

OWN_LIBS在项目Y中只是“X”,在项目Z中是“X Y”.

这适用于项目Y,但在项目Z中,我得到:

CMake Error at … (add_subdirectory): The binary directory

06001

is already used to build a source directory. It cannot be used to
build source directory

06002

Specify a unique binary directory name.

我也试过尝试创建一个本地构建目录,所以对于例如将有libY / build / deps-libX /包含已配置和构建的库X(当从Y使用时),并且Z具有X和Y两者.
不幸的是,接下来我碰到了:

add_library cannot create target “X” because another target with
the same name already exists. The existing target is a shared
library created in source directory
“libX”. See
documentation for policy CMP0002 for more details.

使用ExternalProject不是一个选项.

解决方法

其他人的另一个答案:

由于合并“错误”,我收到此错误.在一个较大的项目中,在合并之后,CMakeLists.txt在同一个子目录中两次调用“add_subdirectory”.它会导致相同的错误消息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读