首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制通过add_dependencies安装cmake?

强制通过add_dependencies安装cmake?
EN

Stack Overflow用户
提问于 2017-04-28 19:29:40
回答 1查看 887关注 0票数 1

如果这是重复的,我很抱歉。我看到很多类似的帖子,但我要么没有得到它,要么它不是完全相同的问题。我需要构建两个共享库。它们位于相同的目录结构中,它们都进入了bin。其中一个依赖于另一个。

我一直在阅读add_dependencies,但这似乎涉及cmake之外的项目构建。这些都在里面

目录结构

代码语言:javascript
复制
src
  CMakeLists.txt
  bin
  xml
    CMakeLists.txt
    XML.c
    utils.c
    XMLSPCL.c

src/CMakelists.txt

代码语言:javascript
复制
set (BIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin")
add_subdirectory(xml/shrxml)

xml/CMakeLists.txt (以下建议之后)

代码语言:javascript
复制
set(CMAKE_BUILD_TYPE Release)
project(shrxml)
    add_library(shrxml SHARED XML.c utils.c)
    install(TARGETS shrxml LIBRARY DESTINATION ${BIN_DIR})

project(shrxmlSPCL)
    add_dependencies(shrxmlSPCL shrxml)
    add_library(shrxmlSPCL SHARED XMLSPCL.c)
    target_link_libraries(shrxmlSPCL LINK_PUBLIC shrxml)
    install(TARGETS shrxmlSPCL LIBRARY DESTINATION ${BIN_DIR})

我可以让它发挥作用,但我知道必须有正确的方法来做到这一点。

为了让它发挥作用,我:

代码语言:javascript
复制
comment out the xmlSPCL project
cmake ..
make shrxml
run make install so I can get shrxml.so in to the bin directory
un-comment out xmlSPCL
make (again)
make install (again)

我想要的是运行make一次,让shrxml.so进入bin dir,这样当shrxmlSPCL被链接时,它就会看到依赖的lib。这能用额外的步骤来完成吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 20:03:49

要想运行一个示例项目,我必须做3件不同的事情

  1. target\_link\_libraries(shrxmlSPCL LINK\_PUBLIC shrxml)

因此,->既不是lib,也不是.so前缀/后缀。

  1. add\_dependencies(shrxmlSPCL shrxml)

->位于具有依赖项的add_library()下面。

  1. 安装(目标shrxmlSPCL库目的地${BIN_DIR}) ->在安装命令文档中添加库
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43687622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档